本頁說明如何在 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,為現有執行個體啟用代管連線集區。
主控台
前往「Clusters」(叢集) 頁面。
在「資源名稱」欄中,按一下叢集。
在「總覽」頁面中,前往「叢集內的執行個體」。
按一下「編輯主要」或「編輯讀取集區」。
在「代管連線集區」下方,勾選「啟用代管連線集區」方塊。
選用:如要設定受管理連線集區選項,請按一下「進階集區選項」。
您可以自訂受管理連線集區選項,滿足執行個體的需求。詳情請參閱「進階設定選項」。
按一下 [儲存變更]。
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_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,查看執行個體的受管理連線集區狀態。
主控台
前往「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/RESET
LISTEN
WITH HOLD CURSOR
PREPARE/DEALLOCATE
PRESERVE/DELETE ROW
個臨時資料表LOAD
- 工作階段層級諮詢鎖定
- 通訊協定層級的準備計畫
- 公開 IP 連線不支援代管連線集區。