0

銃を飛ばして重複をマークする前に、明確な答えが得られなかった人を検索しました。

背景:
同僚と私は、データリーダーとデータセットについて、データリーダー側で話し合いました。

要するに、私はデータリーダーが軽いので気に入っており、同僚はデータセットが切断されているので気に入っているということです。

彼の推論は、データセットが切断されているため、.net がデータセットを埋めて、接続を解放してプールに戻すというものです (私たちのサーバーは 1 日に数百万のヒットを取得します)。

彼はまた、sqlconnection と datareader を using ステートメントでラップしても、using ステートメントは try catch を最後に実行し、とにかく connection.close と dispose を呼び出すだけなので、接続はすぐに解放されないと述べましたが、これは悪いことです。ガベージ コレクタが実行されるのを待たなければならず、それがどれくらいかかるか誰にもわからないからです。その間、接続はプールに返されません。

私の質問:
彼は正しいですか? また、datareader を使用すると、ガベージ コレクションが実行されるまでプール内の接続が縮小されますか?

4

1 に答える 1

0

彼が言っていることは実際には理にかなっています。なぜなら、私は現在私の会社で実行されているプロジェクトでそれを経験したからです。開発者は接続を閉じるコードを書いていますが、それでも接続は開いていて、何度も接続プールを取得しますエラーが発生したため、すべての新しいプロジェクトで切断されたアーキテクチャを使用し始めました。

于 2012-11-20T06:35:11.140 に答える