データベース接続プールの概要
データベース接続は、マルチユーザのWebアプリケーションで特に顕著に現れる、限られた限られた高価なリソースです.データベース接続の管理は、アプリケーション全体の伸縮性と堅牢性に著しく影響し、プログラムのパフォーマンス指標に影響します.データベース接続プールは、この問題に対して提案されています.
データベース接続プールは、データベース接続の割り当て、管理、解放を担当します.これにより、アプリケーションが既存のデータベース接続を再構築するのではなく、既存のデータベース接続を繰り返し使用できます.最大アイドル時間を超える空き時間を持つデータベース接続を解放して、データベース接続が解放されていないことによるデータベース接続の漏れを回避します.このテクノロジーは、データベース操作のパフォーマンスを大幅に向上させることができます.
データベース接続プールは、初期化時に作成されたデータベース接続の数を接続プールに配置します.これらのデータベース接続の数は、最小データベース接続数で設定されます.これらのデータベース接続が使用されるかどうかにかかわらず、接続プールは少なくとも多くの接続数を保証します.接続プールの最大データベース接続数は、アプリケーションが接続プールに要求する接続数が最大接続数を超えると、待機キューに追加される接続プールが占有できる最大接続数を制限します.データベース接続プールの最小接続数と最大接続数の設定は、次の要素を考慮します.
1)最小接続数は、接続プールが保持しているデータベース接続であるため、アプリケーションがデータベース接続の使用量が少ない場合、大量のデータベース接続リソースが浪費される.
2)最大接続数は、接続プールが申請できる最大接続数であり、データベース接続要求がこの数を超えると、後続のデータベース接続要求が待機キューに追加され、その後のデータベース操作に影響します.
3)最小接続数と最大接続数の差が大きすぎる場合、最初の接続要求は利益を得、その後、最小接続数を超える接続要求は新しいデータベース接続を確立することに等しい.ただし、最小接続数より大きいデータベース接続は、使用後すぐに解放されず、再使用を待つか、アイドルタイムアウト後に解放されます.
従来の2階層構造では、クライアント・プログラムは起動時にデータベース接続を開き、プログラムを終了するとデータベース接続を閉じます.このように、プログラム全体の実行中、各クライアントは常にデータベース接続を占有し、ユーザがデータを入力するなど、データベース操作のない空き時間が多くても、データベース接続の使用効率が低下する.
3階層構造モードでは、データベース接続は中間層の接続プールを介して管理されます.ユーザーが本当にデータベース操作を行う必要がある場合にのみ、中間層は接続プールから接続を申請し、データベース操作が完了すると、接続はすぐに接続プールに解放され、他のユーザーが使用できるようになります.これにより、データベース接続の使用効率が大幅に向上するだけでなく、多くのユーザーが少ないデータベース接続を共有でき、接続を確立する時間が省けます.
Tomcat6.0接続プール構成
1.tomcat下のconf下のcontextを構成する.xmlファイル、間に接続プール構成を追加するには:
2.アプリケーションの下のwebを構成します.xmlの間に次のものを追加します.
3.接続データベースのサードパーティドライバをcommon/libの下に置くとOK
4.試験手順(キーコード)
以下、JDBCの動作コードと同じです.
データベース接続プールは、データベース接続の割り当て、管理、解放を担当します.これにより、アプリケーションが既存のデータベース接続を再構築するのではなく、既存のデータベース接続を繰り返し使用できます.最大アイドル時間を超える空き時間を持つデータベース接続を解放して、データベース接続が解放されていないことによるデータベース接続の漏れを回避します.このテクノロジーは、データベース操作のパフォーマンスを大幅に向上させることができます.
データベース接続プールは、初期化時に作成されたデータベース接続の数を接続プールに配置します.これらのデータベース接続の数は、最小データベース接続数で設定されます.これらのデータベース接続が使用されるかどうかにかかわらず、接続プールは少なくとも多くの接続数を保証します.接続プールの最大データベース接続数は、アプリケーションが接続プールに要求する接続数が最大接続数を超えると、待機キューに追加される接続プールが占有できる最大接続数を制限します.データベース接続プールの最小接続数と最大接続数の設定は、次の要素を考慮します.
1)最小接続数は、接続プールが保持しているデータベース接続であるため、アプリケーションがデータベース接続の使用量が少ない場合、大量のデータベース接続リソースが浪費される.
2)最大接続数は、接続プールが申請できる最大接続数であり、データベース接続要求がこの数を超えると、後続のデータベース接続要求が待機キューに追加され、その後のデータベース操作に影響します.
3)最小接続数と最大接続数の差が大きすぎる場合、最初の接続要求は利益を得、その後、最小接続数を超える接続要求は新しいデータベース接続を確立することに等しい.ただし、最小接続数より大きいデータベース接続は、使用後すぐに解放されず、再使用を待つか、アイドルタイムアウト後に解放されます.
従来の2階層構造では、クライアント・プログラムは起動時にデータベース接続を開き、プログラムを終了するとデータベース接続を閉じます.このように、プログラム全体の実行中、各クライアントは常にデータベース接続を占有し、ユーザがデータを入力するなど、データベース操作のない空き時間が多くても、データベース接続の使用効率が低下する.
3階層構造モードでは、データベース接続は中間層の接続プールを介して管理されます.ユーザーが本当にデータベース操作を行う必要がある場合にのみ、中間層は接続プールから接続を申請し、データベース操作が完了すると、接続はすぐに接続プールに解放され、他のユーザーが使用できるようになります.これにより、データベース接続の使用効率が大幅に向上するだけでなく、多くのユーザーが少ないデータベース接続を共有でき、接続を確立する時間が省けます.
Tomcat6.0接続プール構成
1.tomcat下のconf下のcontextを構成する.xmlファイル、間に接続プール構成を追加するには:
<Resource name="jdbc/sample"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SqlserverDriver"
url="jdbc:sqlserver://localhost:8080;databaseName=test"
username="sa"
password="sa"
maxActive="100"
maxIdle="30"
maxWait="10000" />
2.アプリケーションの下のwebを構成します.xmlの間に次のものを追加します.
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/sample</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3.接続データベースのサードパーティドライバをcommon/libの下に置くとOK
4.試験手順(キーコード)
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("jdbc/sample");
Connection con = ds.getConnection();
以下、JDBCの動作コードと同じです.