すべてのプロダクト
Search
ドキュメントセンター

PolarDB:トランザクションレベルの接続プール

最終更新日:Jun 21, 2024

PolarDBでは、トランザクションレベルの接続プールを使用して、多数の接続によるデータベースの負荷を軽減できます。

前提条件

PolarProxy V2.3.46以降がインストールされています。

背景情報

PolarDB for PostgreSQLの接続モデルでは、接続ごとにプロセスを作成する必要があります。 したがって、クライアントが多数の長い接続を同時に維持したり、新しい接続を頻繁に作成したりすると、データベースへの負荷が高まり、パフォーマンスが低下します。

これらのシナリオでパフォーマンスを向上させるために、PolarDB for PostgreSQLはトランザクションレベルの接続プール機能を提供します。 トランザクションレベル接続プール機能により、複数のフロントエンド接続で1つのバックエンド接続を共有できます。 このようにして、作成または維持されるバックエンド接続の数が減少し、データベースの処理能力が向上する。

原理

トランザクションレベルの接続プールは、データベースへの直接接続の数と、頻繁な短い接続によって引き起こされる負荷を減らすのに役立ちます。

トランザクションレベルの接続プール機能を有効にすると、リクエストを送信するクライアントはまずPolarDB PolarProxyに接続します。 PolarProxyは、クライアントとバックエンドデータベース間の接続をすぐには確立しません。 PolarProxyは、トランザクションレベルの接続プール内のアイドル接続が、user、dbname、システム変数などのリクエストパラメーターで指定された条件と一致するかどうかを確認します。 条件に一致するアイドル接続がない場合、PolarProxyはデータベースへの新しい接続を作成します。 アイドル接続が条件に一致する場合、PolarProxyは接続を使用します。 トランザクションがコミットされた後、接続は他の要求のために接続プールに保持される。 これにより、PolarProxyとデータベース間の接続数が削減されます。

トランザクションレベルの接続プール機能を有効にすると、クライアントとPolarDB PolarProxyの間に何千もの接続を確立できます。 ただし、PolarProxyとバックエンドデータベース間には数十または数百の接続しか確立されていません。

PolarDB PolarProxyは接続数を制限しません。 PolarDBクラスターエンドポイントへの最大接続数は、バックエンドデータベースの計算ノードの仕様によって異なります。 トランザクションレベルの接続プール機能が無効になっている場合、クライアントが要求を送信するたびに、システムはプライマリノードと各読み取り専用ノードで接続を作成する必要があります。

手続き

トランザクションレベル接続プール機能の有効化

  1. PolarDBコンソールにログインします。

  2. 左側のナビゲーションウィンドウから [クラスター] をクリックします。 [クラスター] ページの左上隅で、管理するクラスターが存在するリージョンを選択します。

  3. トランザクションレベルの接続プール機能を有効にするクラスターを見つけ、クラスターIDをクリックします。

  4. [URL] セクションで、[設定] をクリックします。

  5. [接続プールの設定] セクションで、[接続プール] として [トランザクションレベル] を選択します。

  6. 次に、[OK] をクリックします。

トランザクションレベルの接続プール機能を無効にする

  1. PolarDBコンソールにログインします。

  2. 左側のナビゲーションウィンドウから [クラスター] をクリックします。 [クラスター] ページの左上隅で、管理するクラスターが存在するリージョンを選択します。

  3. トランザクションレベルの接続プール機能を無効にするクラスターを見つけ、クラスターIDをクリックします。

  4. [URL] セクションで、[設定] をクリックします。

  5. [接続プールの設定] セクションで、[接続プール] として [オフ] を選択します。

  6. 次に、[OK] をクリックします。

制限

  • 次のいずれかの操作を実行すると、接続が閉じられるまで接続はロックされます。 ロックされた接続は接続プールに保持されなくなり、他の要求では使用できなくなります。

    • PREPAREステートメントを実行します。

    • サイズが16 MBを超えるパケットなど、大きなパケットを処理します。

    • コピーモード

    • フラッシュモード

    • 一時テーブル、シーケンス、またはビューを作成します。

    • トランザクションを使用します。

    • カーソルを宣言します。

  • 接続は、他の要求に使用することができる。 したがって、select pg_backend_pid() を使用してクエリするpidは異なる場合があります。

  • 接続は、他の要求に使用することができる。 したがって、pg_stat_activityまたはSQL Explorerに表示されるIPアドレスとポート番号は、実際のIPアドレスとポート番号とは異なる場合があります。

接続プールの選択方法

接続プール機能を有効にするかどうかを決定し、次の推奨事項に基づいて接続プールのタイプを選択できます。

  • サービスに必要な接続数が少なく、必要な接続のほとんどが長い接続であるか、サービスで十分に確立された接続プールを利用できます。 この場合、PolarDBが提供する接続プール機能を有効にする必要はありません。

  • サービスには、数万の接続などの多数の接続が必要です。または、サービスは、ビジネスサーバーのスケールアップまたはスケールアウトに基づいて接続が線形に増加するサーバーレスサービスです。 この場合、このトピックの「制限」セクションで説明されているシナリオでサービスが実行されない場合は、トランザクションレベルの接続プール機能を有効にできます。