【发布时间】:2013-09-25 23:11:42
【问题描述】:
许多博客和网站提到增加 OracleDataReader 的 FetchSize 以提高在获取大量数据(例如数千行)时的性能。有一些记录在案的实验具有确切的数字,例如:http://metekarar.blogspot.com/2013/04/performance-improvement-for-odpnet.html
为了复制这些结果,我创建了一个非常相似的示例应用程序,它以不同的提取大小多次提取此类数据。奇怪的是,除非显式禁用连接池(例如在连接字符串中),否则 FetchSize 的增加/减少将停止产生任何影响。但是,当池化被禁用时,显然 FetchSize 可以提高性能(记录越多,效果越大)。
这可能是特定版本的 ODP.NET(我使用的是 2.112.1.0)中的错误,或者这是一种普遍的怪异行为,这实际上消除了优化每个查询的 FetchSize 的可能性。
当 FetchSize 设置在命令或读取器(而不是连接)上时,连接池和 FetchSize 之间的逻辑联系是什么?我错过了什么吗?
【问题讨论】:
-
您是否使用
FetchSize获得了最终解决方案?我的表有 40.0000 行,有 100 列。 SELECT CAMPO1, ..., CAMPO100 FROM TABLA 很慢,多 15 秒。