web-dev-qa-db-ja.com

データベースプーリングとは何ですか?

データベース接続プーリングの概念とその実現方法を知りたかっただけです。

103
sagar27

データベース接続プーリングは、他のユーザーが再利用できるようにデータベース接続を開いたままにするために使用される方法です。

通常、データベース接続を開くことは、特にデータベースがリモートにある場合、費用のかかる操作です。ネットワークセッションを開き、認証し、認証を確認する必要があります。プーリングは接続をアクティブに保つため、後で接続が要求されたときに、別の接続を作成するよりもアクティブな接続の1つが優先的に使用されます。

次のいくつかの段落については、次の図を参照してください。

  +---------+
  |         |
  | Clients |
+---------+ |
|         |-+  (1)   +------+   (3)    +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
|         |    |     +------+          +----------+
+---------+    |         ^
               |         | (2)
               |     /------\
               |     | Pool |
               |     \------/
           (4) |         ^
               |         | (5)
               |     +-------+   (6)   +-----------+
               #===> | Close | ======> | RealClose |
                     +-------+         +-----------+

最も単純な形式では、「実際の」呼び出しに似たオープン接続API呼び出しに似たAPI呼び出し(1)にすぎません。これはまず、適切な接続のプールをチェックし(2)、使用可能な場合はクライアントに与えられます。それ以外の場合は、新しいものが作成されます(3)。

同様に、実際にはreal close-connectionを呼び出さないclose API呼び出し(4)があり、後で使用するために接続をプール(5)に入れます。ある時点で、プール内の接続は実際クローズ(6)になります。

これはかなり単純な説明です。実際の実装では、複数のサーバーと複数のユーザーアカウントへの接続を処理できる場合があります。接続のベースラインを事前に割り当ててすぐに準備を整えたり、使用パターンが落ち着いたときに実際に古い接続を閉じたりします。

165
paxdiablo

画像は千の言葉を話す(paxdiabloは素晴らしい説明を与えた):

alt text

ソース

78
zengr

名前が示すように。少数の人々が泳ぎたい場合、同じプールで泳ぐことができます。誰かが追加するたびに新しいプールを構築することは本当に理にかなっていますか?時間とコストが優先事項です。

5
vdegenne

データベース接続スプーリングは、データベースへの接続を単にキャッシュするため、次回再利用できるため、データベースに接続するたびに新しい接続を確立するコストを削減できます。

4
Peter

Javaだけでなく、多くのプログラミング言語間での接続プーリングの概念。新しい接続オブジェクトの作成にはコストがかかるため、仮想プールの作成ライフサイクルで固定数の接続が作成および維持されますJava Just( http://javajust.com/javaques.html )このページの質問14を参照

1
Sandhya Saini

接続プーリングの実装にApache commonsライブラリを透過的に使用できます。 http://commons.Apache.org/dbcp/

DBCPはサポートされているHibernateプールでもあります: http://www.informit.com/articles/article.aspx?p=353736&seqNum=4

1
madhurtanwani