多くのブログやサイトで、OracleDataReader の FetchSize を増やして、大量のデータ (数千行など) をフェッチする際のパフォーマンスを向上させることが言及されています。これに関する正確な数値を含むいくつかの文書化された実験があります: http://metekarar.blogspot.com/2013/04/performance-improvement-for-odpnet.html
これらの結果を再現しようとして、さまざまなフェッチ サイズで数回このようなデータ フェッチを行う非常によく似たサンプル アプリケーションを作成しました。奇妙なことに、接続プーリングが明示的に (接続文字列などで) 無効にされていない限り、FetchSize の増加/減少は効果がなくなります。ただし、プーリングが無効になっている場合、FetchSize によってパフォーマンスが向上することは明らかです (レコードが多いほど、効果が大きくなります)。
これは ODP.NET の特定のバージョン (私は 2.112.1.0 を使用しています) のバグである可能性があります。または、これは普遍的な奇妙な動作であり、実際にはクエリごとに FetchSize を最適化する可能性を排除します。
FetchSize がコマンドまたはリーダー (接続ではなく) に設定されている場合、接続プーリングと FetchSize の間の論理的なリンクは何ですか? 何か不足していますか?