2009-05-17 9 views
4

.netで接続プーリングについて読んでいますが、私はそれが正しくなっているかどうかは分かりません。クローズされた接続はプールに戻され、後で再利用できると言われています。しかし、関連するプールは何ですか?それはデータベースかアプリケーション環境(実行されるコンピュータ)だけですか?後者の場合、2人のユーザーが2台の異なるコンピュータでアプリケーションを開き、同じ接続を次々に要求すると、接続プーリングは違いを生じません。関連付けられている接続プールとは何ですか?

編集:もちろん、同じアプリケーションで同じ接続が再び開かれた場合でも違いはありますが、同じアプリケーションの2つの異なるインスタンスはどうですか?

答えて

3

接続プールはクライアントPCに限定され、接続文字列と認証の詳細に関連付けられています。

接続を閉じてプールに戻すと、接続文字列と認証の詳細が正確に一致する場合にのみ再利用されます。

2

接続プールは、クライアント側の単なるコレクションであり、データベースへの接続を最初に開こうとすると接続でいっぱいになります。接続オブジェクトの処理が終了した場合は、その接続オブジェクトは破棄されず、使用可能な接続のコレクションに戻されます。

このようにして、データベース接続のオープンとクローズは非常に高価になります(接続を確立するために必要なネットワークトラフィックについて考える)。

これは、トピックの良いスタートアップチュートリアルです:

http://www.eggheadcafe.com/tutorials/aspnet/df2b05d8-93ea-49e1-aeaa-d116a4d6ac3b/adonet-connection-poolin.aspx

1

ConnectionPoolCollectionが実際のConnectionPoolオブジェクトを保持しているシングルトンオブジェクトです。

DbConnectionの静的関数を反映して、単一のプールをクリアしたり、すべてのプールをクリアしたりすることで、これをテストできます。

ClearAllPools - SQL ServerのDbConnectionからすべてのプールをクリアします。

オブジェクトはシングルトンなので、プロセスの境界を越えて動作しません。プロセスごとにプールが完成します。

インスタンス参照を保持するためにCOMオブジェクトを使用してアプリケーションプロセス全体にプールできるADO.NETプロバイダがいくつかありますが、ほとんどはそうしません。

関連する問題