ヘッダーをスキップ
Oracle Universal Connection Pool for JDBC開発者ガイド
11gリリース2(11.2)
B56283-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

1 UCPの概要

この章の内容は次のとおりです。

接続プールの概要

接続プールは、データベース接続オブジェクトのキャッシュです。オブジェクトは、アプリケーションでデータベースへの接続に使用できる物理的なデータベース接続を表します。実行時に、アプリケーションはプールに接続をリクエストします。リクエストを満たすことができる接続がプールにある場合、その接続がアプリケーションに戻されます。接続が見つからない場合は、新しい接続が作成されてアプリケーションに戻されます。アプリケーションは、その接続を使用してデータベースで処理を実行した後、オブジェクトをプールに返します。その接続は次の接続リクエストに使用できます。

接続プールは、接続オブジェクトが再利用されるようにして、接続オブジェクトが作成される回数を減らします。接続プールにより、データベース集約型のアプリケーションのパフォーマンスは大幅に向上します。これは、接続オブジェクトの作成には時間とリソースの両面でコストがかかるためです。ネットワーク通信、接続文字列の読取り、認証、トランザクション参加、メモリー割当てなどのタスクはすべて、接続オブジェクトの作成に必要な時間およびリソースの一因となります。また、接続がすでに作成されているので、アプリケーションが接続を取得するための待機時間が短くなります。

多くの場合、接続プールには、プールのパフォーマンスを最適化するために使用されるプロパティが用意されています。これらのプロパティにより、プールで許容される最小および最大接続数や、接続がプールに返されるまでアイドル状態でいられる時間などの動作が制御されます。最適に構成された接続プールでは、短いレスポンス時間とプール内の接続を維持するために消費されるメモリーとのバランスがとられます。多くの場合、特定のアプリケーションに対して最適なバランスを実現するまでに、様々な設定を試す必要があります。

接続プールを使用する利点

一般に、データベース集約型のアプリケーションに最も効果があるのは、接続プールです。データベース使用率がアプリケーションのパフォーマンスに影響を及ぼすことがわかっている場合は常に、方針としてアプリケーションで接続プールを使用する必要があります。

接続プールには、次の利点があります。

  • 新しい接続オブジェクトが作成される回数を減らします。

  • 接続オブジェクトの再利用を促します。

  • 接続の取得プロセスを短縮します。

  • 接続オブジェクトを手動で管理するために必要な労力を削減します。

  • 失効した接続数を最小限にします。

  • 接続の維持に消費されるリソース量を制御します。

Universal Connection Pool for JDBCの概要

UCP for JDBCは、JDBC接続をキャッシュするための接続プールを実装します。データベース集約型のJavaアプリケーションでは、この接続プールを使用することでパフォーマンスが向上し、システム・リソースをより効率的に利用します。

UCP JDBC接続プールでは、JDBCドライバを使用して物理的な接続を作成できます。作成された接続はプールで保持されます。プールは構成可能であり、アプリケーションのパフォーマンスおよび可用性の要件に基づいてプールの動作を最適化するために使用するプロパティ一式があります。さらに高度なアプリケーション用に、UCP for JDBCには、プール・インスタンスの管理に使用できるプール・マネージャが用意されています。

また、プールは、Oracle Real Application Clusters(RAC)データベースを通して使用できる多くの高可用性およびパフォーマンス機能を利用します。これらの機能には、高速接続フェイルオーバー(FCF)、実行時接続ロード・バランシングおよび接続アフィニティがあります。


注意:

Oracle Database 11gリリース2(11.2)から、単一インスタンス・データベースのFCFもOracle Restartでサポートされます。Oracle Restartは、単一インスタンスの高可用性(SIHA)としてすでに知られています。Oracle Restartの詳細は、『Oracle Database管理者ガイド』を参照してください。

概念アーキテクチャ

アプリケーションは、UCP for JDBCプール対応のデータソースを使用して、UCP JDBC接続プール・インスタンスから接続を取得します。PoolDataSourceデータソースは標準接続(java.sql.Connection)の取得に、PoolXADataSourceデータソースはXA接続(javax.sql.XAConnection)の取得に使用されます。XAと非XAのどちらのUCP JDBC接続プールにも同じプール機能があります。

プール対応のデータソースは、コネクション・ファクトリ・クラスを利用して、プールで保持される物理的な接続を作成します。アプリケーションは、ConnectionオブジェクトまたはXAConnectionオブジェクトを作成できるファクトリ・クラスの使用を選択できます。プール対応のデータソースには、コネクション・ファクトリ・クラスを設定するためのメソッドの他、ファクトリ・クラスでデータベースへの接続に使用されるデータベースURLおよびデータベース資格証明書を設定するためのメソッドがあります。

アプリケーションは、接続ハンドルをプールから流用してデータベースで処理を実行します。処理が完了すると、接続はクローズされ、接続ハンドルはプールに返されて再利用できるようになります。下の図1-1に、アプリケーションとUCP JDBC接続プール間のやりとりの概念図を示します。

プール対応のデータソースの使用およびデータベース接続の流用の詳細は、第3章「UCPでのデータベース接続の取得」を参照してください。

図1-1 UCP JDBC接続プールの概念図

UCP for JDBCの概念図

接続プールのプロパティ

UCP JDBC接続プールのプロパティは、プール対応のデータソースで使用可能なメソッドを使用して構成されます。プールのプロパティは、プール・サイズの制御や失効した接続の処理、接続がプールに返されるまで流用された状態でいられる時間に関する自律的な決定に使用されます。プール・プロパティの最適な設定は、アプリケーションおよびハードウェアのリソースによって決まります。通常、アプリケーションが接続を取得するために必要な時間と、一定のプール・サイズの維持に必要なメモリー量との間にはトレードオフが存在します。多くの場合、特定のアプリケーションについて目標のパフォーマンスを実現する最適なバランスを見つけるには、実験が必要です。

接続プールのプロパティの設定の詳細は、第4章「Universal Connection Poolの動作の最適化」を参照してください。

接続プール・マネージャ

UCP for JDBCには、接続プールの管理統制を必要とするアプリケーションで使用される接続プール・マネージャがあります。このマネージャは、プールのライフサイクルの明示的な制御およびプールのメンテナンスに使用されます。また、マネージャを使用すると、管理コンソールを介してアプリケーションのプールとその管理の容易さを公開できます。

接続プールの明示的な制御の詳細は、第7章「接続プール・マネージャの使用方法」を参照してください。

高可用性およびパフォーマンスのシナリオ

UCP JDBC接続プールには、接続の高可用性およびパフォーマンスを確保するために使用される多くの機能があります。プールのリフレッシュや接続の検証など、これらの機能の多くは一般的なものであり、あらゆるドライバおよびデータベースの実装で機能します。実行時接続ロード・バランシング、接続アフィニティなど、これらの機能の一部は、Oracle JDBCドライバおよびOracle RACデータベースを使用する必要があります。

Oracle RAC機能の使用の詳細は、第8章「Oracle RAC機能の使用方法」を参照してください。