Tips - ADO.NET

【TOP】

コネクションプーリング
データベースへの接続を確立する処理はアプリケーションに大きな負荷がかかります。
一度確立した接続は同時に異なる接続を確立する際、あるいは次回の接続のために溜めておきたいものです。
この「溜めておく」ことをコネクションをプールすると言います。SQL Server を例に挙げましょう。
MS SQLServer との接続用に最適化された、.NET Framework Data Provider for SQL Server は
ADO.NET を用いたアプリケーションに自動的に接続プールを提供します。
1つのプールの中には複数のコネクションを保持することができ、接続文字列ごとに接続プールが生成されます。
1プール内の保持可能接続数は既定値で100に設定されており、変更することも可能です。
このデータプロバイダのコネクションオブジェクトは System.Data.SqlClient.SqlConnection クラスです。
'接続①を確立する。(Initial Catalog = pubs) Dim con1 As New SqlConnection("Server=INSPIRE;Initial Catalog=pubs;UID=sa;PWD=pass;Integrated Security=SSPI") '↑コネクションプールAが作成されます。 con1.Open() '接続②を確立する。(Initial Catalog = kaDB) Dim con2 As New SqlConnection("Server=INSPIRE;Initial Catalog=kaDB;UID=sa;PWD=pass;Integrated Security=SSPI") '↑コネクションプールBが作成されます。 con2.Open() '接続③を確立する。(Initial Catalog = pubs) Dim con3 As New SqlConnection("Server=INSPIRE;Initial Catalog=pubs;UID=sa;PWD=pass;Integrated Security=SSPI") '↑コネクションプールAからコネクションが取得されます。(接続①と接続文字列が同じ為) con3.Open()
このように、3つの接続を2つのプールで実現することが可能であり、大幅なパフォーマンスの向上が期待されます。
ただし、プールの維持にはある程度のオーバーヘッドを必要とするため、考慮の必要はあります。
また、使い終わったコネクションは、CloseメソッドまたはDisposeメソッドで明示的にプールに戻しておくことをお勧めします。
例では SqlConnection を挙げましたが、OleDbConnection、OdbcConnection、OracleConnection も自動的に接続プールを管理してくれます。

【戻る】