通常の接続と接続プールの構文の違いはわかりません。
次のようなusing
キーを使用している場合:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
command.ExecuteNonQuery();
}
これは接続プールを実行する方法ですか?
接続プーリングについて読むことができます こちら 。
基本的に、接続文字列が同じである限り(大文字と小文字を含む)、接続は同じ接続プールから取得されます。
接続ではなく接続文字列で接続プールを制御します。ほとんどのADOプロバイダーはデフォルトでプーリングを使用します。
using
ステートメントは、オブジェクト(この場合は接続クラス)のDispose
メソッドを呼び出すために使用されます。そうすることで、接続はプールに返されるか、接続文字列の構成に応じて切断されます。
また、分散トランザクションが使用されている場合、接続がプールに直接返されないことに注意する必要があります(.Net 4のTransactionScope
)。トランザクションが完了/ロールバックされると、接続が返されます。
using
を使用していない場合、shouldできるだけ早くConnection.Close()
を呼び出してください。特に、アプリケーションに何らかの負荷がかかっている場合。
接続プールの管理は、上記のように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
私の知る限りでは、
dbへの接続はコストのかかる操作であるため、接続プーリングはado.netクライアントによって管理されます。 ado.netは接続のプールを作成し、接続が必要になるたびにプールからの接続を試みます。クライアントコードに接続を閉じるように言っても、ado.netは後で使用するためにその接続を保持します。あなたはプーリングを管理してはいけません
接続プールは、アプリケーションのweb.configファイルで通知されます。 usingステートメントを使用する場合、オブジェクトは使用終了時に破棄する必要があることを伝えます。
接続プーリングは、接続オブジェクトを開くと、接続を何度も何度も繰り返し作成して、Ado.Netが接続オブジェクトをプーラーに保存またはキャッシュすることを意味します。後で誰かが接続を開くと、すでに行った一連の手順は実行されず、単にキャッシュされた接続プールから接続が検出されます。
データベースでの操作が完了したら、接続を閉じる必要があります。その接続はプールに返され、次のOpen呼び出しで再利用できるようになります。
続きを読む接続プーリングの最良の例:- http://www.gurujipoint.com/2017/07/what-is- connection-pooling-in-aspnet.html