JDBCの基礎知識

接続のプーリングについて教えてください

テンアートニ 中越智哉
2001/5/29

  それではまず、接続のプーリングとは何であって、なぜ必要なのかという話から始めましょう。

 プーリングというのは、実はデータベースの接続に限ったものではなく、オブジェクトなどを、ある場所(プール)にあらかじめ一定数保持しておき、クライアントなどの要求に応じて使用していないオブジェクトを貸し出し、使い終わったらプールに返却してもらい、またプールに入れて再利用するという仕組みのことです。

接続のプーリングの基本的なプロセス。オブジェクトの再利用の仕組みである

 ではなぜ、データベース接続をプーリングする必要があるのでしょうか? 主な理由には、次の2つがあります。

●パフォーマンスの向上
 一般に、オブジェクトのインスタンス化やデータベースへの接続、切断は負荷の高い処理といわれています。Webアプリケーションの場合、基本的にクライアントからのリクエストごとに処理を開始しますので、こういった負荷の高い処理を毎回行っていると応答速度に非常に影響します。プーリングを使うと、こういった処理を大幅に軽減することができ、応答速度を高めることができます。

●リソースの有効利用
 また、Webアプリケーションの場合、特に公開系などのシステムでは同時にアクセスするクライアント数を予測することが難しい場合が多く、クライアントからのリクエストに対して際限なくデータベース接続を行ってしまうと、サーバのリソースを圧迫したり、データベース製品の同時接続数のライセンスに違反してしまうことも考えられます。プールで接続を一括して管理することで、同時接続数に制限をつけることもでき、こういった問題を解決することができます。

接続プーリングにおけるリソースの有効利用

 では、Webアプリケーションでは、データベースの接続プーリングをどのように実現しているのでしょうか。

 初期のJDBC(1.0)では、接続プーリングの仕組みは仕様として定義されていませんでした。ですから、当時のアプリケーションサーバなどでは、データベースの接続プーリングは、各ベンダが独自に実装したクラスを使って実現されていました。そのため、プーリングを使ったアプリケーションは、ミドルウェアが変わると、その部分を修正する必要があり、ポータビリティを損なう結果になっていました。

 しかし、JDBC 2.0からは標準拡張という形ではあるものの、接続プーリングの仕組みが仕様に取り入れられ、各ベンダも、その仕様にのっとった形で、接続プーリングを実装するようになってきました。現在では、J2EEにJDBCも含まれているため、J2EE準拠のアプリケーションサーバであれば、JDBCに定義された仕様で、接続プーリングが使えるようになってきているようです。

「Java Solution FAQ」





Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間