【问题标题】:Why is FetchSize setting in ODP.NET affected by connection pooling?为什么 ODP.NET 中的 FetchSize 设置会受到连接池的影响?
【发布时间】: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 秒。

标签: oracle odp.net


【解决方案1】:

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

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

【讨论】:

  • 我如何在 ODP.NET 中放置 池已开启且自调整已开启
猜你喜欢
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 2022-09-22
相关资源
最近更新 更多