[解決済み] データベースプーリングとは何ですか?
質問
データベース接続プーリングの概念とその実現方法を知りたいのです。
どのように解決するのですか?
データベース 接続 pooling は、データベース接続を開いたままにしておき、他の人が再利用できるようにするための手法です。
一般的に、データベース接続を開くことは、特にデータベースが遠隔地にある場合、コストのかかる操作です。ネットワークセッションを開き、認証を行い、権限を確認する、といった作業が必要になります。プーリングは接続をアクティブにしておくことで、後で接続が要求されたときに、別の接続を作成するよりもアクティブな接続の1つを優先して使用することができます。
次の図を参照してください。
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
最も単純な形としては、"real"と同様のopen-connection APIコール(1)に過ぎない。これはまず、適切な接続がないかプールをチェックし(2)、利用可能であれば、それをクライアントに渡す。そうでなければ、新しい接続が作成されます(3)。
適切なコネクションとは、すでにあるコネクションのことです。 があります。 は、正しい情報 (データベースインスタンス、認証情報、およびその他の情報) を使用してデータベースにアクセスすることができます。
同様に、近いAPIコール(4)があるが、これは実際には リアル close-connectionはむしろ、後で使用するために接続をプールに入れます(5)。ある時点で、プール内のコネクションは 実際に を閉じます(6)。
それはかなり単純化された説明ですね。実際の実装では、複数のサーバや複数のユーザアカウントへの接続を扱うことができるかもしれませんし、接続のベースラインをあらかじめ割り当てて、すぐに接続できるようにするかもしれませんし、使用パターンが落ち着いてきたら古い接続を実際に閉じてしまうかもしれません。
関連
-
データベース接続の問題点基礎となるデータベースから接続を取得できない!
-
ORA-01034 を解決する: ORACLE は利用できません ORA-27101: 共有メモリ領域が存在しない
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] mysqlデータベースのサイズを取得する方法は?
-
[解決済み] 全レコードを返すElasticsearchクエリ
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】Entity Frameworkと接続プーリング
-
[解決済み] VARCHAR(255) が(他の長さではなく)頻繁に使用されているのを見るのは、何か理由があるのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決方法 テーブルの定義が正しくありません。自動列は1つだけで、キーとして定義する必要があります。
-
DB2 SQL エラーの解決法。sqlcode=-420, sqlstate=22018
-
2021年版Redisインタビューの質問(継続更新中)
-
致命的なエラーです。D:Fatalエラー:メンバ関数prepare()の非オブジェクトに対する呼び出し in D:\...
-
MySQL cumsum(累積)の実装
-
[解決済み] 全レコードを返すElasticsearchクエリ
-
[解決済み] redis-serverを停止するにはどうすればよいですか?
-
[解決済み] データベース駆動型アプリケーションのユニットテストに最適な戦略とは?
-
[解決済み】mongoimportを使用してcsvをインポートする方法
-
[解決済み] 既存データベースのERDを生成する【終了しました