このページでは、マネージド接続プーリングの概要と、プーリングを使用して Cloud SQL インスタンスのデータベース接続管理を最適化する方法について説明します。
マネージド接続プーリングを使用すると、プーリングを使用して Cloud SQL インスタンスのリソース使用量と接続レイテンシを最適化し、ワークロードをスケーリングできます。マネージド接続プーリングでは、可能な場合は受信リクエストにサーバー接続が動的に割り当てられます。これにより、接続の急増に対する耐性を持たせること、そして既存のデータベース接続を再利用することで、特にスケールされた接続でパフォーマンスが大幅に向上します。マネージド接続プーリングは、特定のデータベースではなくプーラーのクラスタに接続します。これにより、ワークロードの接続時間が短縮され、スケーラビリティが向上します。
各プールは、一意のデータベースとユーザーに関連付けられています。クライアントが認証されると、プールはプール内のアイドル状態のサーバー接続のいずれかを再利用して、データベースをサーバーに接続しようとします。サーバー接続が利用できない場合は、プールに新しいサーバー接続を作成してデータベースに接続します。使用されるプーラーの数は、インスタンスの vCPU コアの数に基づきます。
マネージド接続プーリングはトランザクション ワークロードにも使用できますが、短時間だけ有効な接続が多数含まれるアプリケーションや、接続が急増する可能性があるアプリケーションで、スループットとレイテンシのメリットを最大限に活用できます。
長期間の接続の場合、マネージド接続プーリングを使用する接続のパフォーマンスは、ダイレクト接続を使用する場合よりもわずかに低くなることがあります。この場合、マネージド接続プーリングは、接続数が非常に多い場合に接続スケーリングを提供します。ただし、通常は長期間の接続を確立するアプリケーションの場合は、接続プーリングの使用を避けることをおすすめします。
Identity and Access Management を使用して、ポートに応じて接続を保護できます。Cloud SQL での IAM の仕組みと制限事項の詳細については、IAM 認証をご覧ください。
マネージド接続プーリングを有効にする方法については、マネージド接続プーリングを構成するをご覧ください。
要件
マネージド接続プーリングを使用するには、インスタンスが次の要件を満たしている必要があります。
- インスタンスは Cloud SQL Enterprise Plus エディションのインスタンスである必要があります。
- インスタンスに直接接続するか、Cloud SQL Auth Proxy のみを使用して接続する必要があります。
- インスタンスは、プライベート サービス アクセス用に設定されているか、パブリック IP を使用しているか、Private Service Connect が有効になっている新しいインスタンスである必要があります。
- インスタンスは新しい Cloud SQL ネットワーク アーキテクチャを使用する必要があります。
- マネージド接続プーリングでは、
POSTGRES_$version.R20250727.00_14
以上のメンテナンス バージョン番号が必要です。セルフサービス メンテナンスの実行の詳細については、セルフサービス メンテナンスを実施するをご覧ください。
Cloud SQL インスタンスのマネージド接続プーリングで使用されるポート
マネージド接続プーリングを有効にすると、Cloud SQL インスタンスがデータベース トラフィックの処理に使用するポートが変更されます。Identity and Access Management を使用して、ポートに応じて接続を保護できます。
マネージド接続プーリングで使用されるポートと、使用可能な IAM オプションは次のとおりです。
TCP ポート 5432: Postgres データベース サーバーによる直接接続に使用されます。これは、psql クライアントを使用して直接接続する場合のデフォルトのポート番号です。
TCP ポート 6432: マネージド接続プーリング サーバーによる直接接続に使用されます。このポートを使用して接続するには、psql クライアントを使用して直接接続する際に
psql -p 6432
を指定します。このポートを使用する場合は、任意の IAM 認証オプションを使用できます。
TCP ポート 3307: マネージド接続プーリング サーバーによる Cloud SQL Auth Proxy 専用接続に使用されます。Cloud SQL Auth Proxy を使用してマネージド接続プーリングに接続する場合、このポート番号は Cloud SQL Auth Proxy クライアントで構成され、変更できません。
このポートでは、任意の IAM 認証オプションまたは IAM データベースの自動認証を使用できます。
プーリング オプション
マネージド接続プーリングでは、pool_mode
パラメータを使用して接続のプーリング方法を管理できます。次のプーリング オプションを使用できます。
transaction
(デフォルト): トランザクション レベルで接続をプールします。接続は、各トランザクションが完了するとプールに戻されます。Cloud SQL では、短期間の接続にはtransaction
プーリング モードを使用することをおすすめします。session
: セッション レベルで接続をプールします。各セッションは、セッション状態を維持する専用のサーバー接続を使用します。これにより、プーリングの効率が低下します。クライアントが切断すると、サーバーは接続プールに戻ります。
高度な構成のオプション
次の構成オプションを使用して、マネージド接続プーリングをカスタマイズできます。
構成名 | 説明 |
---|---|
max_pool_size
|
各接続プールでデータベースとユーザーのペアに許可されるサーバー接続の最大数。デフォルト値は 50 接続です。 |
min_pool_size
|
各接続プールでいつでも使用可能なサーバー接続の最小数。 サーバー接続数が min_pool_size より少ない場合、この設定によりプールにサーバー接続が追加されます。これにより、非アクティブ期間後のデータベース負荷の急増を管理し、接続が使用可能で準備ができていることを確認できます。デフォルト値は 0 接続です。 |
max_client_connections
|
マネージド接続プーリングを使用する場合にインスタンスで許可される最大接続数。デフォルト値は 5,000 接続です。 |
max_prepared_statements
|
transaction プーリング モードでサポートされるプロトコル レベルの名前付き準備済みステートメントの最大数。このオプションを 0 に設定すると、プリペアド ステートメントのサポートが無効になります。最適なパフォーマンスを得るには、この値はデータベースで一般的に使用されるプリペアドの数を超える必要があります。マネージド接続プーリングで準備されたステートメントの数が多いと、メモリ使用量が増加する可能性があります。 デフォルト値は 0 ステートメントです。 |
client_connection_idle_timeout
|
タイムアウトするまでにクライアント接続のアイドル状態が続く時間。この値の範囲は 0 ~ 2,147,483 秒で、デフォルト値は 0 秒です。 |
server_connection_idle_timeout
|
アイドル状態のサーバー接続がタイムアウトするまでの時間を指定します。この値の範囲は 0 ~ 2,147,483 秒で、デフォルト値は 600 秒です。 |
query_wait_timeout
|
クエリがプール内のサーバー接続を待機してからタイムアウトするまでの時間。 このオプションを 0 に設定すると、無効になり、クライアントのキューイングが無期限で許可されます。このオプションを有効にすると、応答しないサーバーが接続を保持するのを防ぐことができます。 この値の範囲は 0 ~ 2,147,483 秒で、デフォルト値は 120 秒です。 |
ignore_startup_parameters
|
デフォルトではマネージド接続プーリングの起動パケット内でトラッキングされない、無視するパラメータ。 |
server_lifetime
|
マネージド接続プーリングがサーバー接続を切断するまでの、サーバー接続が使用されていない最大時間。値が 0 秒に設定されている場合、接続は使用後すぐに閉じられます。 デフォルト値は 3,600 秒です。 |
制限事項
Cloud SQL Enterprise Plus エディション インスタンスでマネージド接続プーリングを使用する場合は、次の制限事項を考慮してください。
- 既存のインスタンスでマネージド接続プーリングを有効にすると、データベースが再起動されます。
- Cloud SQL API を使用してマネージド接続プーリングの有効化、無効化、構成を行う場合、
instance.update
API に他のインスタンス構成の更新を含めることはできません。 - マネージド接続プーリングは、Cloud SQL Auth Proxy バージョン 2.15.2 以降でのみ使用できます。
- Cloud SQL Go Language Connector を使用している場合は、Go の最小バージョン
1.24
をおすすめします。Go バージョン 1.23 以前を使用している場合は、マネージド接続プーリングを使用する際にパフォーマンスに制限が生じる可能性があります。 transaction
プーリング モードでマネージド接続プーリングを使用している場合、次の SQL 機能はサポートされません。SET/RESET
LISTEN
WITH HOLD CURSOR
PREPARE/DEALLOCATE
PRESERVE/DELETE ROW
一時テーブルLOAD
- セッション レベルのアドバイザリ ロック
ポート 3307 と 6432 でマネージド接続プーリングのプーラーに asyncpg データベース インターフェース ライブラリを使用している場合は、
max_prepared_statements
を 0 より大きい値に更新して、マネージド接続プーリングのプーラーであらかじめ準備されたステートメントのサポートを有効にする必要があります。Cloud SQL for PostgreSQL バージョン 17 を使用している場合、
sslnegotiation=direct
オプションはサポートされていません。マネージド接続プーリングでは、クライアント IP のトラッキングはサポートされていません。Query Insights でクライアント IP アドレスを保存するを有効にすると、クライアント IP アドレスは IP アドレス自体ではなく
local
として表示されます。
マネージド接続プーリングで使用されるサーバー接続
max_connections
データベース構成により、マネージド接続プーリングのプーラーが使用できるサーバー接続の最大数が制限されます。Cloud SQL では、インスタンスのワークロード要件とデータベース インスタンスのサイズに基づいてこの値を調整することをおすすめします。ピーク負荷時には、認証の接続数が非常に多くなることがあります。
インスタンスでデフォルトの max_pool_size
(50 個のプール)を使用している場合は、データベースの max_connections
フラグを設定するときに、マネージド接続プーリング用に CPU あたり少なくとも 15 個のサーバー接続を予約することをおすすめします。max_connections
フラグの詳細については、最大同時接続数をご覧ください。インスタンスの max_connections
フラグを変更するには、データベース フラグを構成するをご覧ください。