5.2 UCPでのプール・サイズの制御について
UCP JDBC接続プールには、プール・サイズの制御に使用される一連のプロパティがあります。これらのプロパティを使用すると、要求の増減につれて、プール内の接続数を増減できるようになります。この動的な動作は、不要な接続の維持に浪費される場合のあるシステム・リソースの節約に役立ちます。
この節では、以下のトピックについて説明します。
5.2.1 初期プール・サイズの設定
初期プール・サイズのプロパティは、接続プールの初回作成時または再初期化時に作成される使用可能な接続の数を指定します。通常、このプロパティは、プールを最適なサイズにすることで、発生する起動時間を削減するために使用されます。
値0
は、接続を事前作成しないことを示します。デフォルト値は0
です。次の例では、初期プール・サイズの構成を示します。
pds.setInitialPoolSize(5);
初期プール・サイズのプロパティが最大プール・サイズのプロパティより大きい場合は、最大数の接続のみが初期化されます。
初期プール・サイズのプロパティが最小プール・サイズのプロパティより小さい場合は、初期数の接続のみが初期化され、最小プール・サイズ値を満たす十分な接続が作成されるまで維持されます。
プール初期化プロセス中に、initPoolSize
プロパティで指定された値まで接続を作成できない場合、プールは、初期プール・サイズを満たすために残りの接続を作成しようとします。プールに物理的な能力がない場合、プール初期化プロセスは終了し、残りのライフ・サイクルに対して指定されている最小および最大の接続制限を維持しようとします。
5.2.2 最小プール・サイズの設定
最小プール・サイズのプロパティは、プールが保持する使用可能な接続および流用された接続の最小数を指定します。接続プールがまだ最小サイズに達していない場合を除いて、常に指定された最小プール・サイズに戻ろうとします。たとえば、最小限度が10
に設定され、まだ2つの接続しか作成および流用されていない場合は、この数値が最小プール・サイズを下回っているため、プールで保持される接続数は2
のままです。
このプロパティを使用すると、要求が減少するにつれてプール内の接続数を減らすことができます。同時に、システム・リソースが不要な接続の維持のために浪費されないようにします。
デフォルト値は0
です。次の例では、最小プール・サイズの構成を示します。
pds.setMinPoolSize(2);
5.2.3 最大プール・サイズの設定
最大プール・サイズのプロパティは、プールが保持する使用可能な接続および流用された(使用中の)接続の最大数を指定します。最大数の接続が流用された場合、プールに返されるまで接続は利用できません。
このプロパティを使用すると、要求が増加するにつれてプール内の接続数を増やすことができます。同時に、プールがシステムのリソースを使い果し、最終的にアプリケーションのパフォーマンスや可用性に影響を及ぼすほど大きくならないようにします。
値0
は、プールで保持される接続がないことを示します。接続を取得しようとすると例外が発生します。デフォルト値では、最大でInteger.MAX_VALUE
(デフォルトでは2147483647)まで接続を作成し続けることができます。次の例では、最大プール・サイズの構成を示します。
pds.setMaxPoolSize(100);
5.2.4 最小アイドル接続数の設定
最小アイドル接続数プロパティは、接続プールが保持するアイドル接続の最小数を指定します。
Integer.MAX_VALUE
までです。デフォルト値は0です。このプロパティを最大プール・サイズより大きい値に設定すると無効になります。
次のコード・スニペットは、このプロパティの使用方法を示しています。
PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setURL("<URL>");
pds.setUser("<user_name>");
pds.setPassword("<password>");
pds.setInitialPoolSize(5);
pds.setMinPoolSize(5);
pds.setMinIdle(5);
pds.setMaxPoolSize(10);
Connection conn = pds.getConnection();
conn.close();
関連項目:
このプロパティの詳細は、Oracle Universal Connection Pool Java APIリファレンスを参照してください