本頁面說明如何在 PostgreSQL 適用的 AlloyDB 中啟用、連線至及監控受管理連線集區。代管連線集區是一種設計模式,可維護預先建立的連線集區,藉此提升資料庫連線管理效率。應用程式會重複使用這個連線集區,而不必為每個資料庫作業開啟及關閉連線,進而提升效能和資源使用率。
使用代管連線集區,您可以為 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,為現有執行個體啟用代管連線集區。
控制台
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。
控制台
前往「Clusters」(叢集) 頁面。
按一下「資源名稱」欄中的叢集。
在「總覽」頁面中,前往「叢集中的執行個體」。
找到要修改的執行個體,然後按一下「編輯執行個體」或「編輯讀取集區」。
在「代管連線集區」下方,展開「進階集區選項」。
修改要更新的進階集區選項。您可以修改下列選項:
- 連線模式
- 集區大小上限
- 集區大小下限
- 用戶端連線數量上限
- 用戶端連線閒置逾時時間(秒)
- 伺服器連線閒置逾時時間(秒)
- 查詢等待逾時時間(秒)
- 準備就緒的陳述式數量上限
- 忽略啟動參數
- 伺服器生命週期(秒)
按一下「更新執行個體」。
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。這必須是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_CONNECTIONSERVER_IDLE_TIMEOUTQUERY_WAIT_TIMEOUTIGNORE_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,查看執行個體的受管理連線集區狀態。
控制台
前往「Clusters」(叢集) 頁面。
按一下「資源名稱」欄中的叢集。
在「總覽」頁面中,找出要查看受管理連線集區狀態的執行個體。「代管連線集區」欄位會顯示是否已啟用這項功能。
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,為現有執行個體停用代管連線集區。
控制台
前往「Clusters」(叢集) 頁面。
按一下「資源名稱」欄中的叢集。
在「總覽」頁面中,前往「叢集中的執行個體」。
找出要停用代管連線集區的執行個體,然後按一下「編輯執行個體」或「編輯讀取集區」。
在「代管連線集區」下方,取消勾選「啟用代管連線集區」方塊。
按一下「更新執行個體」。
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 |
追蹤各資料庫的用戶端連線數量 (按照用戶端連線狀態分組)。這項指標包含的狀態如下:
|
伺服器連線/database/conn_pool/server_connections |
追蹤各資料庫的伺服器連線數 (依伺服器連線狀態分組)。這項指標包含的狀態如下:
|
平均等待時間/database/conn_pool/client_connections_avg_wait_time |
所有用戶端處於等待伺服器狀態的平均時間,以微秒為單位 (以資料庫為單位)。 |
詳情請參閱「AlloyDB 指標」。
限制
搶先版發布期間適用下列限制,且這些限制可能會在正式版發布時或之後變更或移除:
- 代管連線集區不支援透過 AlloyDB Auth Proxy 或 AlloyDB 語言連接器建立連線。
- 如果在交易集區模式中使用受管理連線集區,則不支援下列 SQL 功能:
SET/RESETLISTENWITH HOLD CURSORPREPARE/DEALLOCATEPRESERVE/DELETE ROW臨時資料表LOAD- 工作階段層級的諮詢鎖定
- 通訊協定層級的準備計畫
- 代管連線集區不支援公開 IP 連線。