web-dev-qa-db-ja.com

.net接続プーリング

通常の接続と接続プールの構文の違いはわかりません。

次のようなusingキーを使用している場合:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    command.ExecuteNonQuery();
}

これは接続プールを実行する方法ですか?

19
Erez

接続プーリングについて読むことができます こちら

基本的に、接続文字列が同じである限り(大文字と小文字を含む)、接続は同じ接続プールから取得されます。

34

接続ではなく接続文字列で接続プールを制御します。ほとんどのADOプロバイダーはデフォルトでプーリングを使用します。

usingステートメントは、オブジェクト(この場合は接続クラス)のDisposeメソッドを呼び出すために使用されます。そうすることで、接続はプールに返されるか、接続文字列の構成に応じて切断されます。

また、分散トランザクションが使用されている場合、接続がプールに直接返されないことに注意する必要があります(.Net 4のTransactionScope)。トランザクションが完了/ロールバックされると、接続が返されます。

usingを使用していない場合、shouldできるだけ早くConnection.Close()を呼び出してください。特に、アプリケーションに何らかの負荷がかかっている場合。

19
jgauffin

接続プールの管理は、上記のようにSqlConnectionを使用して抽象化されます。 ADO.NET接続プールのデフォルトではオンになっており、それをオフにしたり、接続文字列のプールサイズを制御するなど、さらに制御できます。

消す

Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Pooling=false;

または最小と最大の制御

Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Min Pool Size=5; Max Pool Size=20;

プールの詳細な説明と検証方法 http://www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx

12
Fadrian Sudaman

私の知る限りでは、

dbへの接続はコストのかかる操作であるため、接続プーリングはado.netクライアントによって管理されます。 ado.netは接続のプールを作成し、接続が必要になるたびにプールからの接続を試みます。クライアントコードに接続を閉じるように言っても、ado.netは後で使用するためにその接続を保持します。あなたはプーリングを管理してはいけません

接続プールは、アプリケーションのweb.configファイルで通知されます。 usingステートメントを使用する場合、オブジェクトは使用終了時に破棄する必要があることを伝えます。

2
adt

接続プーリングは、接続オブジェクトを開くと、接続を何度も何度も繰り返し作成して、Ado.Netが接続オブジェクトをプーラーに保存またはキャッシュすることを意味します。後で誰かが接続を開くと、すでに行った一連の手順は実行されず、単にキャッシュされた接続プールから接続が検出されます。

データベースでの操作が完了したら、接続を閉じる必要があります。その接続はプールに返され、次のOpen呼び出しで再利用できるようになります。

続きを読む接続プーリングの最良の例:- http://www.gurujipoint.com/2017/07/what-is- connection-pooling-in-aspnet.html

1
Jatin Phulera

SQL接続のデフォルトは接続プーリングです。 (最大プールサイズ= 100)

接続文字列から接続プールを構成できます。

here から接続文字列に関する詳細情報を見つけることができます。

0
Pongsathon.keng