設定代管連線集區

本頁說明如何在 AlloyDB for PostgreSQL 中啟用、連線及監控受管理連線集區。代管連線集區是一種設計模式,可維護預先建立的連線集區,藉此提升資料庫連線管理效率。應用程式會重複使用這個連線集區,而不必為每個資料庫作業開啟及關閉連線,進而提升效能和資源使用率。

使用代管連線集區,您可以為 AlloyDB 執行個體最佳化資源用量和連線延遲時間,進而擴充資料庫工作負載。代管連線集區會盡可能使用集區和多工處理,動態將伺服器連線指派給傳入的要求。這種做法可吸收突然出現的連線尖峰,並重複使用現有的資料庫連線,因此能提升效能,特別是對於已擴充的連線而言。使用受管理連線集區時,應用程式會連線至集區器,而非特定資料庫,這樣可縮短連線時間,並為讀取工作負載提供可擴充性。

雖然您可以將代管連線集區用於任何交易工作負載,但代管連線集區最適合用於含有較多短期連線的應用程式,或可能發生連線暴增的應用程式。

事前準備

您必須使用直接連線連線至執行個體。受管理連線集區不支援透過 AlloyDB Auth Proxy 或 AlloyDB 語言連接器建立連線。

必要的角色

如要取得啟用及使用受管理連線集區所需的權限,請要求管理員在 AlloyDB 執行個體上,授予您 Cloud 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)
每個使用者和資料庫配對的連線集區大小上限。預設值為 50 個連線。
集區大小下限
(connection-pooling-min-pool-size)
連線集區的大小下限。預設值為 0 個連線。
用戶端連線閒置逾時時間(秒)
(connection-pooling-client-connection-idle-timeout)
用戶端連線閒置多久後會逾時。這個值可以介於 0 到 2,147,483 秒之間,預設值為 0 秒。
伺服器連線閒置逾時時間(秒)
(connection-pooling-server-connection-idle-timeout)
伺服器連線閒置多久後會逾時。這個值可介於 0 到 2,147,483 秒之間,預設值為 600 秒。
查詢等待逾時時間(秒)
(connection-pooling-query-wait-timeout)
查詢逾時前等待的時間。這個值可介於 0 到 2,147,483 秒之間,預設值為 120 秒。
準備就緒的陳述式數量上限
(connection-pooling-max-prepared-statements)
交易中傳送的預先準備陳述式指令數量上限 (交易集區模式)。預設值為 0。
忽略啟動參數
(connection-pooling-ignore-startup-parameters)
您要忽略的參數,這些參數預設不會在啟動封包中追蹤。
伺服器生命週期(秒)
(connection-pooling-server-lifetime)
伺服器連線閒置多久後,受管理連線集區就會關閉連線。預設值為 3,600 秒。

根據預設,代管連線集區會啟動與 AlloyDB 伺服器的連線。建立並驗證用戶端連線後,代管連線集區可能會建立一或多個伺服器連線,讓集區大小符合所選設定。接著,系統會為用戶端連線指派可用的伺服器連線。伺服器連線會持續維持,直到明確關閉或閒置時間超過閒置伺服器連線逾時時間為止。

啟用代管連線集區

您可以為任何現有或新的執行個體啟用代管連線集區。

為新的主要執行個體啟用

如要建立啟用代管連線集區的新主要執行個體,請參閱「建立主要執行個體」。您可以使用Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,為執行個體啟用受管理連線集區。

為新的讀取集區執行個體啟用

如要建立啟用代管連線集區的新讀取集區執行個體,請參閱「建立讀取集區執行個體」。您可以使用Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,為執行個體啟用受管理連線集區。

為現有執行個體啟用

您可以使用Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,為現有執行個體啟用代管連線集區。

主控台

  1. 前往「Clusters」(叢集) 頁面。

    前往「Clusters」(叢集)

  2. 在「資源名稱」欄中,按一下叢集。

  3. 在「總覽」頁面中,前往「叢集內的執行個體」

  4. 按一下「編輯主要」或「編輯讀取集區」

  5. 在「代管連線集區」下方,勾選「啟用代管連線集區」方塊。

  6. 選用:如要設定受管理連線集區選項,請按一下「進階集區選項」

    您可以自訂受管理連線集區選項,滿足執行個體的需求。詳情請參閱「進階設定選項」。

  7. 按一下 [儲存變更]。

gcloud

如要為現有的主要或讀取集區執行個體啟用受管理連線集區,請使用下列 gcloud alpha alloydb instances update 指令:

gcloud alpha 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 方法和網址:

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

使用 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

修改執行個體的代管連線集區

啟用代管連線集區後,您可以使用進階設定選項,自訂代管連線集區選項,以滿足執行個體的需求。這些設定選項稱為受管理連線集區旗標。如要進一步瞭解設定選項、預設值和範圍,請參閱進階設定選項

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,修改現有執行個體的代管連線集區設定選項。

主控台

  1. 前往「Clusters」(叢集) 頁面。

    前往「Clusters」(叢集)

  2. 在「資源名稱」欄中,按一下叢集。

  3. 在「總覽」頁面中,前往「叢集內的執行個體」

  4. 找到要修改的執行個體,然後按一下「編輯執行個體」或「編輯讀取集區」

  5. 在「代管連線集區」下方,展開「進階集區選項」

  6. 修改要更新的進階集區選項。您可以修改下列選項:

    • 連線模式
    • 集區大小上限
    • 集區大小下限
    • 用戶端連線數量上限
    • 用戶端連線閒置逾時時間(秒)
    • 伺服器連線閒置逾時時間(秒)
    • 查詢等待逾時時間(秒)
    • 準備就緒的陳述式數量上限
    • 忽略啟動參數
    • 伺服器生命週期(秒)
  7. 按一下「更新執行個體」

gcloud

如要修改現有執行個體的受管理連線集區設定選項,請使用下列 gcloud alpha alloydb instances update 指令:

  gcloud alpha 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_CONNECTION \
      | --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。這必須是 sessiontransaction
    • --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。這必須是 sessiontransaction
    • MAX_POOL_SIZE
    • MIN_POOL_SIZE
    • MAX_CLIENT_CONNECTION
    • SERVER_IDLE_TIMEOUT
    • QUERY_WAIT_TIMEOUT
    • IGNORE_STARTUP_PARAMETERS

HTTP 方法和網址:

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_connection": "MAX_CLIENT_CONNECTION",
      "server_idle_timeout": "SERVER_IDLE_TIMEOUT",
      "query_wait_timeout": "QUERY_WAIT_TIMEOUT",
      "ignore_startup_parameters": "IGNORE_STARTUP_PARAMETERS"
    },
  }
}

查看執行個體的代管連線集區狀態

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 AlloyDB API,查看執行個體的受管理連線集區狀態。

主控台

  1. 前往「Clusters」(叢集) 頁面。

    前往「Clusters」(叢集)

  2. 在「資源名稱」欄中,按一下叢集。

  3. 在「總覽」頁面中,找出要查看受管理連線集區狀態的執行個體。「代管連線集區」欄位會顯示是否已啟用或停用。

gcloud

如要查看現有執行個體的受管理連線集區狀態,請使用下列 gcloud alpha alloydb instances describe 指令:

gcloud alpha 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 方法和網址:

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,為現有執行個體停用代管連線集區。

主控台

  1. 前往「Clusters」(叢集) 頁面。

    前往「Clusters」(叢集)

  2. 在「資源名稱」欄中,按一下叢集。

  3. 在「總覽」頁面中,前往「叢集內的執行個體」

  4. 找出要停用代管集區連線的執行個體,然後按一下「編輯執行個體」或「編輯讀取集區」

  5. 在「代管連線集區」下方,取消勾選「啟用代管連線集區」方塊。

  6. 按一下「更新執行個體」

gcloud

如要為現有執行個體停用代管連線集區,請使用下列 gcloud alpha alloydb instances update 指令:

gcloud alpha 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 設為 false

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:專案 ID。
  • LOCATION_ID:叢集所在區域的 ID。
  • CLUSTER_ID:您建立的叢集 ID。只能使用小寫英文字母、數字和連字號,而且開頭須為小寫英文字母。
  • INSTANCE_ID:您建立的執行個體 ID。

HTTP 方法和網址:

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

JSON 要求內文:

{
  "connectionPoolConfig": {
    "enabled": false
  }
}

監控代管連線集區

AlloyDB 提供下列指標,協助您監控執行個體上受管理連線集區的運作情況。您可以使用 Metrics Explorer 查看這些指標。

指標名稱 說明
連線集區數量

/database/conn_pool/num_pools
每個資料庫的連線集區總數。
用戶端連線

/database/conn_pool/client_connections
追蹤每個資料庫的用戶端連線數量,並依用戶端連線狀態分組。這項指標包含的狀態如下:
  • active:每個資料庫的有效連線數,包括沒有任何待處理查詢要求的閒置用戶端。
  • waiting:每個資料庫等待伺服器連線的用戶端數量。
伺服器連線

/database/conn_pool/server_connections
追蹤每個資料庫的伺服器連線數量,並依伺服器連線狀態分組。這項指標包含的狀態如下:
  • active:每個資料庫的有效連線數。
  • idle:每個資料庫的閒置伺服器連線數。
平均等待時間

/database/conn_pool/client_connections_avg_wait_time
所有用戶端處於等待伺服器狀態的平均時間,以微秒為單位 (每個資料庫)。

詳情請參閱「AlloyDB 指標」。

限制

搶先版發布期間適用下列限制,這些限制可能會在正式版發布時或之後變更或移除:

  • 代管連線集區不支援透過 AlloyDB Auth Proxy 或 AlloyDB 語言連接器建立連線。
  • 如果您在交易集區模式中使用代管連線集區,則不支援下列 SQL 功能:
    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW 個臨時資料表
    • LOAD
    • 工作階段層級諮詢鎖定
    • 通訊協定層級的準備計畫
  • 公開 IP 連線不支援代管連線集區。