Cloud SQL 高交易 ID 使用率建議工具會主動產生建議,協助您避免 PostgreSQL 適用的 Cloud SQL 執行個體發生潛在的交易 ID 環繞問題。Cloud SQL 高交易 ID 使用率建議工具僅適用於 Cloud SQL Enterprise Plus 版本執行個體。
如果 Cloud SQL 執行個體即將發生交易 ID 溢位問題,建議您套用這項建議。本頁面說明 Cloud SQL 高交易 ID 使用率建議的運作方式,以及如何使用這項建議。
運作方式
交易開始時會指派交易 ID,且在交易清除前會凍結。交易 ID 使用率是指未清除的交易數量 (已指派減去凍結) 占 20 億上限值的比例。在預設的 PostgreSQL 設定下,如果清除程序運作正常且未中斷,大多數資料庫的交易 ID 使用率約為 10%。在繁忙的資料庫中,如果一般工作負載經常優先於清除作業,交易 ID 使用率可能會偏高。如果交易 ID 使用率趨近於極高值 (80% 以上),資料庫可能會有交易 ID 耗盡的風險。交易 ID 使用率達到 100% 時,即為交易 ID 環繞。 交易 ID 使用率達到 100% 後,PostgreSQL 會停止接受寫入查詢。
Cloud SQL 高交易 ID 使用率建議工具會分析 PostgreSQL 適用的 Cloud SQL 執行個體上的交易 ID 使用率。
如果交易 ID 使用率達到 80% 以上,建議採取行動,避免交易 ID 循環使用。
定價
Cloud SQL 高交易 ID 使用率建議工具位於標準 Recommender 定價層級。
事前準備
如要查看最佳化建議和洞察資料,請先完成下列步驟:
- 如要取得查看及處理洞察資料和建議的權限,請確認您具備必要角色。
Tasks 角色 查看建議 下列任一角色: recommender.cloudsqlViewer
或cloudsql.viewer
。套用建議 以下任一角色: recommender.cloudsqlAdmin
、cloudsql.editor
或cloudsql.admin
。 -
Enable the Recommender API.
列出改善執行個體效能的建議
您可以使用 Google Cloud 控制台、gcloud CLI
或 Recommender API,列出「提升執行個體效能」建議。
只有在執行個體即將發生交易 ID 循環時,系統才會顯示改善執行個體效能的建議。
主控台
如要使用Google Cloud 控制台列出執行個體效能建議,請按照下列步驟操作:
前往「Cloud SQL 執行個體」頁面。
按一下「防範交易 ID 環繞」最佳化建議橫幅上的「查看全部」。
或者,請按照下列步驟操作:
gcloud CLI
如要使用 gcloud CLI
列出「改善執行個體效能」最佳化建議,請執行 gcloud recommender recommendations list
指令,如下所示:
gcloud recommender recommendations list \ --project=PROJECT_ID \ --location=LOCATION \ --recommender=google.cloudsql.instance.PerformanceRecommender \ --filter=recommenderSubtype=POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE
更改下列內容:
PROJECT_ID
:您的專案 IDLOCATION
:區域,例如us-central1
API
如要使用 Recommendations API 列出「改善執行個體效能」建議,請呼叫 recommendations.list
方法,如下所示:
GET https://recommender.googleapis.com/v1beta1/projects/PROJECT-ID/locations/LOCATION/recommenders/google.cloudsql.instance.PerformanceRecommender.PostgresHighTransactionIdUtilizationBestPractice/recommendations
更改下列內容:
PROJECT_ID
:您的專案 ID。LOCATION
:區域,例如us-central1
。
如果建議工具偵測到交易 ID 使用率偏高的執行個體,就會將這些執行個體列在表格中,並提供其他成效建議。每個資料列都會顯示執行個體 ID、簡短建議、資料庫引擎、位置和上次重新整理日期。
查看洞察資料和詳細建議
如要查看交易 ID 趨近於溢位的執行個體相關深入分析和詳細建議,請使用 Google Cloud 主控台、gcloud CLI
或 Recommender API。
主控台
如要使用 Google Cloud 主控台查看接近效能門檻的執行個體相關深入分析資料和詳細建議,請按一下執行個體清單中的建議連結。
gcloud CLI
如要使用 gcloud CLI
查看接近效能門檻的執行個體相關深入分析和詳細建議,請執行 gcloud recommender insights list
指令,如下所示:
gcloud recommender insights list \ --project=PROJECT_ID \ --location=LOCATION \ --insight-type=google.cloudsql.instance.PerformanceInsight \ --filter=insightSubtype=POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION
更改下列內容:
PROJECT_ID
:您的專案 ID。LOCATION
:區域,例如us-central1
。
API
如要使用 Recommendations API 查看有關執行個體 (即將達到效能門檻) 的深入分析和詳細建議,請依下列方式呼叫 insights.list
方法:
GET https://recommender.googleapis.com/v1beta1/projects/PROJECT-ID/locations/LOCATION/insightTypes/google.cloudsql.instance.PerformanceRecommender.PostgresHighTransactionIdUtilization/insights
更改下列內容:
PROJECT_ID
:您的專案 ID。LOCATION
:區域,例如us-central1
。
下表列出 Cloud SQL 高交易 ID 使用率建議產生器提供的深入分析和建議。子類型會顯示在 gcloud CLI
和 API 結果中。
深入分析 | 建議 |
---|---|
這個執行個體的交易 ID 使用率百分比偏高,即將達到 100%。 子類型: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION |
避免 Cloud SQL 執行個體發生交易 ID 環繞錯誤。 子類型: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE
|
套用建議
請仔細評估建議,然後執行下列任一操作:
如要查看建議,請按一下「查看執行個體」。請參閱「提升執行個體效能」或「防範交易 ID 環繞」,並按照建議操作。
如要關閉建議,讓建議不再醒目顯示並呈現暗淡的色彩,請按一下「關閉」。
如要關閉面板,但不套用或捨棄建議,請按一下「取消」。
提升執行個體效能
如要解決執行個體的交易 ID 迴繞問題,請按照下列步驟操作:
如需更多資訊,請參閱「Using VACUUM to accelerate transaction ID freezing in Cloud SQL for PostgreSQL」網誌文章。
防範交易 ID 環繞
如要防止執行個體的交易 ID 環繞,請執行下列指令:
SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();
輸出內容範例:
postgres=> select * from google_vacuum_mgmt.pg_fix_wraparound(); -[ RECORD 1 ]-----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- issue_description | Cloud SQL for PostgreSQL has detected an open prepared transaction on your instance which is blocking VACUUM. Monitor the transaction ID utilization and commit or rollback the transaction, as needed. query | ROLLBACK PREPARED 'trx_id_pin'; or COMMIT PREPARED 'trx_id_pin'; recommendation | To commit a prepared transaction, you must be connected as the same user that originally executed the transaction: postgres insights | Transaction ID Utilization: 88.49%