2013-09-25 41 views
0

許多博客和網站都提到增加OracleDataReader的FetchSize以提高獲取大量數據(例如數千行)時的性能。有一些記錄在這個確切的數字的實驗,如:http://metekarar.blogspot.com/2013/04/performance-improvement-for-odpnet.html爲什麼受連接池影響的ODP.NET中的FetchSize設置?

試圖複製這些結果,我創建了一個非常類似的示例應用程序,這樣的數據獲取多次獲取不同的大小。奇怪的是,除非顯式禁用連接池(例如在連接字符串中),否則FetchSize的增加/減少將不起作用。當池化被禁用時,顯然FetchSize可以提高性能(記錄越多,效果越大)。

可能這是ODP.NET(我正在使用2.112.1.0)的特定版本中的一個錯誤,或者這是一個普遍的奇怪行爲,實際上它消除了爲每個查詢優化FetchSize的可能性。

什麼是連接池和FETCHSIZE之間的邏輯鏈路,當FETCHSIZE設置的命令或讀卡器(而不是在連接)?我錯過了什麼嗎?

+0

您是否使用'FetchSize'獲得了最終解決方案?我的桌子有40.0000行,有100列。 ***選擇CAMPO1,...,來自TABLA的CAMPO100 ***速度較慢,15秒以上。 –

回答

0

事實證明,這個意外的行爲僅限於以下條件: 1)SELECT語句是完全 2相同)的池是ON 3)自整定爲ON

只有在這些條件是FetchSize第一次被設置時,它被ODP.NET以某種方式緩存,並試圖改變它不起作用。

+0

我可以把*** ****池和ODP.NET中的自我調整*** ***? –

相關問題