0

许多博客和网站提到增加 OracleDataReader 的 FetchSize 以提高在获取大量数据(例如数千行)时的性能。有一些记录在案的实验具有确切的数字,例如: http: //metekarar.blogspot.com/2013/04/performance-improvement-for-odpnet.html

为了复制这些结果,我创建了一个非常相似的示例应用程序,它以不同的提取大小多次提取此类数据。奇怪的是,除非连接池被显式禁用(例如在连接字符串中),否则 FetchSize 的增加/减少停止产生任何影响。但是,当池被禁用时,很明显 FetchSize 可以提高性能(记录越多,效果越大)。

这可能是特定版本的 ODP.NET(我使用的是 2.112.1.0)中的错误,或者这是一种普遍的怪异行为,这实际上消除了优化每个查询的 FetchSize 的可能性。

当 FetchSize 在命令或阅读器(而不是连接)上设置时,连接池和 FetchSize 之间的逻辑链接是什么?我错过了什么吗?

4

1 回答 1

0

事实证明,这种意外行为仅限于以下情况:1)SELECT语句完全相同 2)池化为ON 3)自调整为ON

只有在第一次设置 FetchSize 时,它​​才会以某种方式被 ODP.NET 缓存并且尝试更改它不起作用。

于 2013-09-25T15:11:42.523 回答