许多博客和网站提到增加 OracleDataReader 的 FetchSize 以提高在获取大量数据(例如数千行)时的性能。有一些记录在案的实验具有确切的数字,例如: http: //metekarar.blogspot.com/2013/04/performance-improvement-for-odpnet.html
为了复制这些结果,我创建了一个非常相似的示例应用程序,它以不同的提取大小多次提取此类数据。奇怪的是,除非连接池被显式禁用(例如在连接字符串中),否则 FetchSize 的增加/减少停止产生任何影响。但是,当池被禁用时,很明显 FetchSize 可以提高性能(记录越多,效果越大)。
这可能是特定版本的 ODP.NET(我使用的是 2.112.1.0)中的错误,或者这是一种普遍的怪异行为,这实际上消除了优化每个查询的 FetchSize 的可能性。
当 FetchSize 在命令或阅读器(而不是连接)上设置时,连接池和 FetchSize 之间的逻辑链接是什么?我错过了什么吗?