我正在使用C#比较Sql Server和Oracle的读取性能。基本上,我正在使用ADO.NET和ODP.NET并在两者上获得类似的值,除非我在分布式机器上读取BLOB列(一台机器请求另一台机器上的数据库)。
重要说明:
在我的测试中,所有数据完全相同,我正在读取2881行,每行有一些二进制数据。获得的结果是:
我已经在Oracle上使用的配置表现更好:
OracleCommand.InitialLOBFetchSize = -1;
(尝试了其他正值,但效果最差)OracleCommand.InitialLONGFetchSize = -1;
(尝试了其他正值,但效果最差)OracleReader.FetchSize = OracleReader.RowSize * 10000;
(在第一个Read()
之前设置)所以问题是:
其他说明:
InitialLOBFetchSize = -1
会改善这种情况,但没有太大改善(InitialLOBFetchSize = 0
时间为〜12.8s)。参考文献: