我正在使用带有Castle Active Record的NHibernate 3.2。我想在成功使用Postgresql和SQL Server之后在Oracle 11g上实现。
我发现与Postgres或SQL Server相比,在我们的应用程序中插入Oracle需要很长时间。对于可能需要约500毫秒的SQL Server上的Castle AR会话范围配置在Oracle上占用5秒或更多。这两个数据库位于同一台测试机器上,因此它不是网络。
我正在使用Oracle .NET提供程序(稍微提高了速度),并且已将表中的任何CLOB和VARCHAR2替换为NVARCHAR2列。我的配置看起来像
Dictionary<string, string> oracleProperties = new Dictionary<string, string>
{
{"connection.provider", "NHibernate.Connection.DriverConnectionProvider"},
{"connection.driver_class", "NHibernate.Driver.OracleDataClientDriver"},
{"dialect", "NHibernate.Dialect.Oracle10gDialect"},
{"proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"},
{"adonet.batch_size", NHIBERNATE_BATCH_SIZE.ToString(CultureInfo.InvariantCulture)},
{"connection.connection_string", this.ConnectionString}
};
InPlaceConfigurationSource source = new InPlaceConfigurationSource();
`ConnectionString` looks like
"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=serverAddress)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service)));User Id=id;userName;Password=userPassword;Min Pool Size=25;Decr Pool Size=2;"
关于我可能遗失的任何想法?
感谢。