AlloyDB for PostgreSQL ワークロードをスケーリングし、接続の急増を吸収して、接続レイテンシを短縮するには、マネージド接続プーリングを有効にします。マネージド接続プーリングでは、事前に確立されたサーバー接続のプールが維持され、データベース オペレーションごとにバックエンド接続を開いたり閉じたりするのではなく、これらの接続間で受信クライアント リクエストが動的に多重化されます。
アプリケーションはデータベース バックエンドに直接接続するのではなく、プーラーに接続します。これにより、読み取りワークロードと書き込みワークロードの接続時間が短縮され、スケーラビリティが向上します。マネージド接続プーリングはトランザクション ワークロードにも使用できますが、存続期間の短い接続を使用するアプリケーションや、接続が急増するアプリケーションに最も適しています。
始める前に
マネージド接続プーリングは、AlloyDB Auth Proxy または AlloyDB 言語コネクタとの接続もサポートしています。
必要なロール
マネージド接続プーリングの有効化と使用に必要な権限を取得するには、AlloyDB インスタンスに対する AlloyDB 管理者 (roles/alloydb.admin)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、マネージド接続プーリングの有効化と使用に必要な alloydb.instances.update 権限が含まれています。
カスタムロールあるいはその他の事前定義ロールを使用してこの権限を取得することもできます。
高度な構成のオプション
AlloyDB のマネージド接続プーリングは、次の高度なプーリング構成オプションをサポートしています。これらの構成をインスタンスレベルで設定することで、マネージド接続プーリングをインスタンスのニーズに合わせてカスタマイズできます。設定には、 Google Cloud コンソール、gcloud CLI、または AlloyDB API を使用します。
| 構成名 | 説明 |
|---|---|
|
接続モード ( connection-pooling-pool-mode)
|
接続モードには、トランザクション(デフォルト)またはセッションを選択できます。 トランザクション( transaction):
トランザクション レベルで接続をプールします。サーバー接続は、トランザクション中にクライアントに割り当てられます。トランザクションが完了すると、サーバー接続はプールに戻されます。 セッション( session):
セッション レベルで接続をプールします。サーバー接続は、接続中にクライアントに割り当てられます。クライアントにより切断されると、サーバー接続はプールに戻されます。 |
|
最大プールサイズ ( connection-pooling-max-pool-size)
|
ユーザーとデータベースのペアごとの接続プールの最大サイズ。この値の範囲は 1~262,042 接続で、デフォルト値は 50 接続です。 |
|
最小プールサイズ ( connection-pooling-min-pool-size)
|
接続プールの最小サイズ。この値の範囲は 0~262,042 接続で、デフォルト値は 0 接続です。 |
|
クライアント接続の最大数 ( connection-pooling-max-client-connections)
|
許可されるクライアント同時接続の最大数。この値の範囲は 1~262,042 接続で、デフォルト値は 5000 接続です。 |
|
アイドル状態のクライアント接続のタイムアウト(秒) ( connection-pooling-client-connection-idle-timeout)
|
タイムアウトするまでにクライアント接続のアイドル状態が続く時間。この値の範囲は 0~2,147,483 秒で、デフォルト値は 0 秒です。 |
|
アイドル状態のサーバー接続のタイムアウト(秒) ( connection-pooling-server-idle-timeout)
|
アイドル状態のサーバー接続がタイムアウトするまでの時間。この値の範囲は 0~2,147,483 秒で、デフォルト値は 600 秒です。 |
|
クエリ待機のタイムアウト(秒) ( connection-pooling-query-wait-timeout)
|
クエリがタイムアウトするまでの時間。この値の範囲は 0~2,147,483 秒で、デフォルト値は 120 秒です。 |
|
準備済みステートメントの最大数 ( connection-pooling-max-prepared-statements)
|
トランザクション プーリング モードで送信される準備済みステートメント コマンドの最大数。この値の範囲は 0~262,042 で、デフォルト値は 0 です。 |
|
スタートアップ パラメータを無視する ( connection-pooling-ignore-startup-parameters)
|
デフォルトでは起動パケット内でトラッキングされない、プーラーが無視する起動パラメータのカンマ区切りのリスト。デフォルト値は extra_float_digits です。 |
|
サーバーのライフタイム(秒) ( connection-pooling-server-lifetime)
|
マネージド接続プーリングがサーバー接続を切断するまでの、サーバー接続が使用されていない最大時間。この値の範囲は 0~2,147,483 秒で、デフォルト値は 3600 秒です。 |
|
統計情報ユーザー ( connection-pooling-stats-users)
|
統計情報コンソールへの接続を許可されたデータベース ユーザーのカンマ区切りのリスト。このパラメータは、Google Cloud CLI または AlloyDB API を使用して構成できます。承認されたユーザーは、各プーラーの alloydb_mcp_stats_{pooler_id} データベースに保持されている高度な指標にアクセスできます。 |
デフォルトでは、マネージド接続プーリングが AlloyDB サーバーへの接続を開始します。クライアント接続が確立され、認証されると、プールのサイズが選択した構成と一致するようマネージド接続プーリングによって 1 つ以上のサーバー接続が作成される場合があります。クライアント接続には、使用可能なサーバー接続が割り当てられます。サーバー接続は明示的に切断されるまで、または、アイドル状態のサーバー接続がタイムアウトとなる時間を過ぎるまで維持されます。
マネージド接続プーリングを有効にすると、AlloyDB Auth プロキシ サーバーの接続も、AlloyDB Auth プロキシが有効になっているプールされた接続のみを含む別のプールを使用してプールされます。
マネージド接続プーリングを有効にする
マネージド接続プーリングは、既存または新規のインスタンスに対して有効にすることができます。
新しいプライマリ インスタンスに対して有効にする
マネージド接続プーリングを有効にして新しいプライマリ インスタンスを作成するには、プライマリ インスタンスを作成するをご覧ください。インスタンスのマネージド接続プーリングを有効にするには、Google Cloud コンソール、Google Cloud CLI、または AlloyDB API を使用します。
新しい読み取りプール インスタンスに対して有効にする
マネージド接続プーリングを有効にして新しい読み取りプール インスタンスを作成するには、読み取りプール インスタンスを作成するをご覧ください。インスタンスのマネージド接続プーリングを有効にするには、Google Cloud コンソール、Google Cloud CLI、または AlloyDB API を使用します。
既存のインスタンスに対して有効にする
既存のインスタンスのマネージド接続プーリングを有効にするには、Google Cloud コンソール、Google Cloud CLI、または AlloyDB API を使用します。
コンソール
[クラスタ] ページに移動します。
[リソース名] 列でクラスタをクリックします。
[概要] のページで、[クラスタ内のインスタンス] に移動します。
[プライマリを編集] または [読み取りプールを編集] をクリックします。
[マネージド接続プール] で、[マネージド接続プールを有効にする] チェックボックスをオンにします。
省略可: マネージド接続プーリングのオプションを構成するには、[高度なプーリング オプション] をクリックします。
マネージド接続プーリングのオプションは、インスタンスのニーズに合わせてカスタマイズできます。詳しくは、高度な構成オプションをご覧ください。
[変更を保存] をクリックします。
gcloud
既存のプライマリ インスタンスまたは読み取りプール インスタンスに対してマネージド接続プーリングを有効にするには、次の gcloud alloydb instances update コマンドを使用します。
gcloud alloydb instances update INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--enable-connection-pooling
次のように置き換えます。
INSTANCE_ID: マネージド接続プーリングを有効にする AlloyDB インスタンスの ID。PROJECT_ID: プロジェクトの ID。REGION_ID: リージョンの ID。CLUSTER_ID: クラスタの ID。
マネージド接続プーリングを有効にしたら、高度な構成オプションの設定で、インスタンスのニーズに合わせてマネージド接続プーリングのオプションをカスタマイズできます。構成オプションの設定方法について詳しくは、インスタンスのマネージド接続プーリングを変更するをご覧ください。
REST
既存のプライマリ インスタンスまたは読み取りプール インスタンスに対してマネージド接続プーリングを有効にするには、次のコマンドを使用して connectionPoolConfig を設定します。
リクエストのデータを使用する前に、次のように置き換えてください。
PROJECT_ID: プロジェクトの ID。LOCATION_ID: クラスタのリージョンの ID。CLUSTER_ID: クラスタの ID。英小文字、数字、ハイフンを使用できますが、先頭は英小文字にする必要があります。INSTANCE_ID: インスタンスの ID。
HTTP メソッドと URL:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
リクエストの本文(JSON):
{
"connectionPoolConfig": {
"enabled": true
}
}
マネージド接続プーリングに接続する
使うポートが違うことを除けば、マネージド接続プーリングへの接続はデータベースへの直接接続と同じです。マネージド接続プーリングではポート 6432 でリッスンします。AlloyDB インスタンスに追加されたすべてのユーザーは、マネージド接続プーリングを使用して接続できます。
組み込み認証を使用して接続する
このコマンドの例では、組み込み認証を使用して AlloyDB インスタンスをマネージド接続プーリングに接続します。
psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/postgres
次のように置き換えます。
USERNAME: AlloyDB インスタンスに接続するデータベース ユーザー名。PASSWORD: ユーザーのパスワード。IP_ADDRESS: AlloyDB インスタンスの IP アドレス。
SSL 接続を使用して接続する
インスタンスが SSL モードの場合、マネージド接続プールへの接続にもこのモードが適用されます。デフォルトでは、SSL 接続のみが受け入れられます。暗号化されていない接続を許可するには、次の gcloud alloydb instances update コマンドを使用して、インスタンスの SSL モードを ALLOW_UNENCRYPTED_AND_ENCRYPTED に設定します。
gcloud alloydb instances update INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED
IAM 認証を使用して接続する
IAM 認証を使用してマネージド接続プーリングに接続するには、次の 2 つの方法があります。
OAuth 2.0 トークンで認証する: gcloud CLI を使用して OAuth 2.0 トークンを取得し、ポート
6432への接続時にパスワードとして使用します。詳細については、OAuth 2.0 トークンで認証するをご覧ください。自動的に認証する:
--auto-iam-authnフラグを指定して AlloyDB Auth Proxy を使用するか、AlloyDB 言語コネクタを使用してプログラムで IAM 認証を有効にします。
マネージド接続プールに関する統計情報を表示する
AlloyDB インスタンスでマネージド接続プーリングを有効にすると、組み込みの統計コンソールに接続して、接続プールに関する詳細情報をリアルタイムで確認できます。プライベート サービス アクセスまたは Private Service Connect を使用して、プライベート IP アドレスを介してポート 6432 の統計情報コンソールにアクセスできます。統計情報コンソールは、アクティブな接続やアイドル状態の接続のモニタリング、待機時間のトラブルシューティング、プールサイズの最適化に役立ちます。
統計情報コンソールを使用する手順は次のとおりです。
デフォルトでは、統計情報コンソールへのアクセスを許可されているデータベース ユーザーはいません。Google Cloud CLI を使用して、接続可能なデータベース ユーザーを指定する必要があります。これにより、統計情報コンソールへのアクセスが許可されます。
統計情報コンソール ユーザーを追加するには、
gcloud alloydb instances updateコマンドを使用します。gcloud alloydb instances update INSTANCE_ID \ --project=PROJECT_ID \ --region=REGION_ID \ --cluster=CLUSTER_ID \ --connection-pooling-stats-users=STATS_USERS次のように置き換えます。
INSTANCE_ID: 統計情報コンソール ユーザーを承認する AlloyDB インスタンスの名前。STATS_USERS: データベース ユーザー名のカンマ区切りのリスト。PROJECT_ID: プロジェクトの ID。REGION_ID: リージョンの ID。CLUSTER_ID: クラスタの ID。
ポート
6432でインスタンスに接続します。各接続プーラー インスタンスは、一意の番号が付けられたデータベースに独自の指標を保持します。モニタリングするプーラーに関連する統計データベースを指定します。- 標準プーラーの場合は、
alloydb_mcp_stats_POOLER_IDを使用します。ID は1で、インスタンスで実行されているプーラーの数までです。 - Auth Proxy プーラーの場合は、
alloydb_mcp_stats_authproxy_pooler1を使用します。
psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/alloydb_mcp_stats_1次のように置き換えます。
POOLER_ID: 接続プーラーの ID。ID は1で、インスタンスで実行されているプーラーの数までです。USERNAME: AlloyDB インスタンスに接続するデータベース ユーザー名。PASSWORD: ユーザーのパスワード。IP_ADDRESS: AlloyDB インスタンスの IP アドレス。これは、Private Service Connect(PSC)またはプライベート サービス アクセス(PSA)のアドレスである必要があります。
- 標準プーラーの場合は、
接続したら、PgBouncer 互換の
SHOWコマンドを実行して指標を表示します。次に例を示します。SHOW STATS;: 各データベースの一般的な統計情報を表示します。SHOW POOLS;: 現在のすべての接続プールのステータスを一覧表示します。SHOW CLIENTS;: 現在のクライアント接続に関する情報が表示されます。
使用可能なコマンドの一覧については、公式の PgBouncer のドキュメントをご覧ください。
インスタンスのマネージド接続プーリングを変更する
マネージド接続プーリングを有効にしたら、高度な構成オプションの設定で、インスタンスのニーズに合わせてマネージド接続プーリングのオプションをカスタマイズできます。これらの構成オプションは、マネージド接続プーリング フラグと呼ばれます。詳しくは、高度な構成オプションをご覧ください。これらのオプションは、AlloyDB Auth Proxy プーラーにも適用されます。
既存のインスタンスのマネージド接続プーリングの構成オプションを変更するには、 Google Cloud コンソール、Google Cloud CLI、または AlloyDB API を使用します。
コンソール
[クラスタ] ページに移動します。
[リソース名] 列でクラスタをクリックします。
[概要] のページで、[クラスタ内のインスタンス] に移動します。
変更するインスタンスの [インスタンスを編集] または [読み取りプールを編集] をクリックします。
[マネージド接続プール] で、[高度なプーリング オプション] を開きます。
目的の高度なプーリング オプションを変更します。変更できるのは次のオプションです。
- 接続モード
- 最大プールサイズ
- 最小プールサイズ
- クライアント接続の最大数
- アイドル状態のクライアント接続のタイムアウト(秒)
- アイドル状態のサーバー接続のタイムアウト(秒)
- クエリ待機のタイムアウト(秒)
- 準備済みステートメントの最大数
- スタートアップ パラメータを無視する
- サーバーのライフタイム(秒)
[インスタンスを更新] をクリックします。
gcloud
既存のインスタンスのマネージド接続プーリングの構成オプションを変更するには、次の gcloud alloydb instances update コマンドを使用します。
gcloud alloydb instances update INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
{ \
--connection-pooling-pool-mode=CONNECTION_MODE \
| --connection-pooling-max-pool-size=MAX_POOL_SIZE \
| --connection-pooling-min-pool-size=MIN_POOL_SIZE \
| --connection-pooling-max-client-connections=MAX_CLIENT_CONNECTIONS \
| --connection-pooling-server-idle-timeout=SERVER_IDLE_TIMEOUT_PERIOD \
| --connection-pooling-query-wait-timeout=QUERY_WAIT_TIMEOUT_PERIOD \
| --connection-pooling-ignore-startup-parameters=IGNORE_STARTUP_PARAMETERS \
| --connection-pooling-max-prepared-statements=MAX_PREPARED_STATEMENTS \
| --connection-pooling-server-lifetime=SERVER_LIFETIME \
| --connection-pooling-client-connection-idle-timeout=CLIENT_CONNECTION_IDLE_TIMEOUT \
}
次のように置き換えます。
INSTANCE_ID: マネージド接続プーリング オプションを変更する AlloyDB インスタンスの名前。PROJECT_ID: プロジェクトの ID。REGION_ID: リージョンの ID。CLUSTER_ID: クラスタの ID。次のオプションを構成できます。
--connection-pooling-pool-mode。sessionまたはtransactionのいずれかにする必要があります。--connection-pooling-max-pool-size--connection-pooling-min-pool-size--connection-pooling-max-client-connections--connection-pooling-server-idle-timeout--connection-pooling-query-wait-timeout--connection-pooling-ignore-startup-parameters--connection-pooling-max-prepared-statements--connection-pooling-server-lifetime--connection-pooling-client-connection-idle-timeout
REST
既存のインスタンスのマネージド接続プーリングの構成オプションを変更するには、次のコマンドを使用して connectionPoolConfig を設定します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: プロジェクトの ID。LOCATION_ID: クラスタのリージョンの ID。CLUSTER_ID: クラスタの ID。英小文字、数字、ハイフンを使用できますが、先頭は英小文字にする必要があります。INSTANCE_ID: インスタンスの ID。次のオプションを構成できます。
POOL_MODE。sessionまたはtransactionのいずれかにする必要があります。MAX_POOL_SIZEMIN_POOL_SIZEMAX_CLIENT_CONNECTIONSSERVER_IDLE_TIMEOUTQUERY_WAIT_TIMEOUTIGNORE_STARTUP_PARAMETERSMAX_PREPARED_STATEMENTSSERVER_LIFETIMECLIENT_CONNECTION_IDLE_TIMEOUTSTATS_USERS
HTTP メソッドと URL:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
リクエストの本文(JSON):
{
"connectionPoolConfig": {
"enabled": true,
"flags": {
"pool_mode": "POOL_MODE",
"max_pool_size": "MAX_POOL_SIZE",
"min_pool_size": "MIN_POOL_SIZE",
"max_client_connections": "MAX_CLIENT_CONNECTIONS",
"server_connection_idle_timeout": "SERVER_IDLE_TIMEOUT",
"query_wait_timeout": "QUERY_WAIT_TIMEOUT",
"ignore_startup_parameters": "IGNORE_STARTUP_PARAMETERS",
"max_prepared_statements": "MAX_PREPARED_STATEMENTS",
"server_lifetime": "SERVER_LIFETIME",
"client_connection_idle_timeout": "CLIENT_CONNECTION_IDLE_TIMEOUT",
"stats_users": "STATS_USERS"
}
}
}
インスタンスのマネージド接続プーリングのステータスを確認する
インスタンスのマネージド接続プーリングのステータスを確認するには、 Google Cloud コンソール、Google Cloud CLI、または AlloyDB API を使用します。
コンソール
[クラスタ] ページに移動します。
[リソース名] 列でクラスタをクリックします。
[概要] のページで、マネージド接続プーリングのステータスの確認が必要なインスタンスを見つけます。[マネージド接続プーリング] フィールドに、有効か無効かが表示されます。
gcloud
既存のインスタンスのマネージド接続プールのステータスを確認するには、次の gcloud alloydb instances describe コマンドを使用します。
gcloud alloydb instances describe INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--format="value(connectionPoolConfig.enabled)"
次のように置き換えます。
INSTANCE_ID: マネージド接続プーリングのステータスを表示する AlloyDB インスタンスの名前。PROJECT_ID: プロジェクトの ID。REGION_ID: リージョンの ID。CLUSTER_ID: クラスタの ID。
マネージド接続プーリングが有効になっている場合、次のレスポンスが返されます。
True
REST
AlloyDB インスタンスのマネージド接続プーリングのステータスを確認するには、次のコマンドを使用して connectionPoolConfig を探します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: プロジェクトの ID。LOCATION_ID: クラスタのリージョンの ID。CLUSTER_ID: クラスタの ID。英小文字、数字、ハイフンを使用できますが、先頭は英小文字にする必要があります。INSTANCE_ID: インスタンスの ID。
HTTP メソッドと URL:
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
既存のインスタンスでマネージド接続プーリングを無効にする
既存のインスタンスのマネージド接続プーリングを無効にするには、Google Cloud コンソール、Google Cloud CLI、または AlloyDB API を使用します。
コンソール
[クラスタ] ページに移動します。
[リソース名] 列でクラスタをクリックします。
[概要] のページで、[クラスタ内のインスタンス] に移動します。
マネージド接続プーリングを無効にするインスタンスの [インスタンスの編集] または [読み取りプールの編集] をクリックします。
[マネージド接続プール] で、[マネージド接続プールを有効にする] チェックボックスをオフにします。
[インスタンスを更新] をクリックします。
gcloud
既存のインスタンスでマネージド接続プーリングを無効にするには、次の gcloud alloydb instances update コマンドを使用します。
gcloud alloydb instances update INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--no-enable-connection-pooling
次のように置き換えます。
INSTANCE_ID: マネージド接続プーリングを無効にする AlloyDB インスタンスの名前。PROJECT_ID: プロジェクトの ID。REGION_ID: リージョンの ID。CLUSTER_ID: クラスタの ID。
REST
既存のインスタンスのマネージド接続プーリングを無効にするには、次のコマンドを使用して connectionPoolConfig.enabled を false に設定します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: プロジェクトの ID。LOCATION_ID: クラスタのリージョンの ID。CLUSTER_ID: クラスタの ID。英小文字、数字、ハイフンを使用できますが、先頭は英小文字にする必要があります。INSTANCE_ID: インスタンスの ID。
HTTP メソッドと URL:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
リクエストの本文(JSON):
{
"connectionPoolConfig": {
"enabled": false
}
}
マネージド接続プーリングをモニタリングする
AlloyDB には、インスタンスでマネージド接続プーリングがどのように実行されているかをモニタリングするために役立つ次の指標が用意されています。各指標には、プーラー ID のラベルが付けられます。これらの指標は、Metrics Explorer で確認できます。
| 指標名 | 説明 |
|---|---|
接続プールの数/database/conn_pool/num_pools |
データベースあたりの接続プールの合計数。 |
クライアント接続/database/conn_pool/client_connections |
クライアント接続のステータス別にグループ化されたクライアント接続の数を、データベースごとに追跡します。この指標に含まれるステータスは次のとおりです。
|
サーバー接続/database/conn_pool/server_connections |
サーバー接続のステータス別にグループ化されたサーバー接続の数を、データベースごとに追跡します。この指標に含まれるステータスは次のとおりです。
|
平均待ち時間/database/conn_pool/client_connections_avg_wait_time |
すべてのクライアントがサーバーの待機状態に費やした平均時間(データベースあたりマイクロ秒単位)。 |
詳しくは、AlloyDB の指標をご覧ください。
制限事項
次の制限が適用されます。
- トランザクション プーリング モードでマネージド接続プーリングを使用する場合、次の SQL 機能はサポートされません。
SET/RESETLISTENWITH HOLD CURSORPREPARE/DEALLOCATEPRESERVE/DELETE ROW一時テーブルLOAD- セッション レベルのアドバイザリ ロック
- プロトコル レベルの準備済みプラン
- マネージド接続プーリングは、パブリック IP 接続ではサポートされていません。
- PostgreSQL
REPLICATIONロールを持つユーザーからの接続はサポートされていません。