銃を飛ばして重複をマークする前に、明確な答えが得られなかった人を検索しました。
背景:
同僚と私は、データリーダーとデータセットについて、データリーダー側で話し合いました。
要するに、私はデータリーダーが軽いので気に入っており、同僚はデータセットが切断されているので気に入っているということです。
彼の推論は、データセットが切断されているため、.net がデータセットを埋めて、接続を解放してプールに戻すというものです (私たちのサーバーは 1 日に数百万のヒットを取得します)。
彼はまた、sqlconnection と datareader を using ステートメントでラップしても、using ステートメントは try catch を最後に実行し、とにかく connection.close と dispose を呼び出すだけなので、接続はすぐに解放されないと述べましたが、これは悪いことです。ガベージ コレクタが実行されるのを待たなければならず、それがどれくらいかかるか誰にもわからないからです。その間、接続はプールに返されません。
私の質問:
彼は正しいですか? また、datareader を使用すると、ガベージ コレクションが実行されるまでプール内の接続が縮小されますか?