コネクションプーリングとは、データベースに接続する場合に、要求されるたびにコネクションを作成するのではなく、コネクションをプール(保持)して再利用する機能です。
コネクションプーリングを使用することにより、同一ユーザのアプリケーションからデータベースへ接続する回数が軽減し、データベースへのコネクションを確立するアプリケーションの負荷が軽減できます。
Symfoware .NET Data Providerドライバの動作
Symfoware .NET Data Providerドライバのコネクションプーリング時の動作について、説明します。
初回接続時は、 コネクションプーリングを使用しない場合と同じように、データベースへ接続します。次回の接続要求をした場合でも、プールしているコネクションがすべて使用中の場合には、新規にデータベースへ接続します。
また、最大コネクション数で設定された値以上のコネクション要求が発生した場合、Symfoware .NET Data Providerドライバがエラーを返却します。
Symfoware .NET Data Providerドライバでは、データソース接続に設定された“最大プールコネクション数”に達するまで、コネクションを保持していきます。接続要求をした際、プールしているコネクションの中に未使用のものが存在すると、事前に接続したコネクションを再利用します。その後、プールしているコネクション数以上に接続要求が重なると、未使用のコネクションが存在しないため、新たに接続し、コネクションの接続本数は、Max Pool Sizeまたはmaxpooledconnectionsで指定した値まで増加していきます。
コネクションプーリング中は、アプリケーションでCloseメソッドを実施しても、データベースとの物理的なコネクションの切断を行いません。以下の場合に、データベースとの物理的なコネクションを切断します。
プロセスが終了する場合には、データベースとの物理的なコネクションをすべて切断します。
処理途中においても、同時に接続要求が重なり、最大プールコネクション数を超えるコネクションが接続された場合には、そのクローズ要求で、データベースとの物理的なコネクションを切断します(最大プールコネクション数内に収まるように調整します)。
接続がプールに返されるときに、作成時刻と現在の時刻が比較されます、作成時刻と現在の時刻の差分(秒単位) がconnectionlifetimeで指定された値を超えていた場合は、接続が破棄されます。
詳細は、“付録B 接続文字列に指定可能なキーワード”のキーワード“connectionlifetime”を参照してください。