Cloud SQL 高事务 ID 利用率 recommender 会主动生成建议,以帮助您避免 Cloud SQL PostgreSQL 实例的潜在事务 ID 回卷。
当 Cloud SQL 实例出现事务 ID 回卷问题趋势时,您可以应用此建议。本页面介绍了 Cloud SQL 高事务 ID 利用率 Recommender 的工作原理和使用方法。
工作原理
事务 ID 会在事务开始时分配,并且会被冻结,直到事务被清空。事务 ID 利用率是未清空事务的数量(已分配的数量减去冻结的数量),表示为最大值 20 亿的分数。在默认 PostgreSQL 设置下,如果清空流程以最佳方式执行,并且不会出现中断情况,则大多数数据库的事务 ID 利用率约为 10%。在繁忙的数据库中,事务 ID 利用率水平较高,其中常规工作负载通常优先于清空。如果事务 ID 利用率趋向于非常高的值(80% 或更多),则数据库可能会面临事务 ID 耗尽风险。达到 100% 的事务 ID 利用率称为事务 ID 回卷。事务 ID 利用率百分比达到 100% 后,PostgreSQL 会停止接受写入查询。
Cloud SQL 高事务 ID 利用率 Recommender 会分析 Cloud SQL PostgreSQL 实例上的事务 ID 利用率。
如果事务 ID 利用率百分比大于或等于 80%,建议您采取措施以避免事务 ID 回卷。
价格
Cloud SQL 高事务 ID 利用率 Recommender 为标准 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 回卷”建议横幅上的查看全部。
或者,请按以下步骤操作:
转到 Recommendation Hub。另请参阅 Recommendation Hub 使用入门。
在 Improve Cloud SQL Instance Performance(改进 Cloud SQL 实例性能)卡片中,点击查看全部。
选择具有 Prevent transaction ID wraparound(避免事务 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
。
如果 Recommender 检测到事务 ID 利用率较高的实例,它会将其与其他性能建议一起在某个表中。每行显示实例 ID、简要建议、数据库引擎、位置和上次刷新日期。
查看数据分析和详细建议
您可以使用 Google Cloud 控制台、gcloud CLI
或 Recommender API 查看有关接近事务 ID 回卷的实例的分析洞见和详细建议。
控制台
如需使用 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 high-transaction-ID-utilization Recommender 生成的数据分析和建议。gcloud CLI
和 API 结果中显示子类型。
数据分析 | 建议 |
---|---|
此实例的事务 ID 利用率百分比很高且接近 100%。 子类型: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION |
避免 Cloud SQL 实例的潜在事务 ID 回卷。 子类型: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE
|
采纳建议
请仔细评估建议,并执行以下任何操作:
如需检查建议,请点击查看实例。 请参阅优化实例的性能或避免事务 ID 回卷,并遵循相关建议。
如需忽略建议,使其被取消突出显示并呈灰显状态,请点击忽略。
如需关闭面板而不应用或忽略建议,请点击取消。
优化实例的性能
如需解决实例的事务 ID 回卷问题,请执行以下操作:
如需了解详情,另请参阅使用 VACUUM 加快 Cloud SQL for PostgreSQL 中的事务 ID 冻结速度博文。
避免事务 ID 回卷
如需避免实例的事务 ID 回卷,请运行以下命令:
SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();
输出示例:
postgres=> select * from google_vacuum_mgmt.pg_fix_wraparound(); -[ RECORD 1 ]-----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- issue_description | Gemini 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%