借助性能捕获,您可以在性能下降时捕获实例的详细指标,从而诊断数据库的暂时性问题。 如需使用性能捕获功能,请为实例启用性能捕获功能,并配置触发 Cloud SQL 实例的详细指标快照的阈值。
准备工作
如需使用性能捕获,您必须为实例启用 Query Insights。
所需的角色
如需获得创建实例和启用性能捕获所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:
-
Cloud SQL Admin (
roles/cloudsql.admin) -
Compute Viewer (
roles/compute.viewer)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
启用和配置性能捕获
您可以在创建或更新 Cloud SQL 实例时启用性能捕获功能。
gcloud
创建和配置实例
如需在创建 Cloud SQL 实例时启用性能捕获,请运行以下命令:
gcloud beta sql instances create INSTANCE_NAME \ --database-version=DATABASE_VERSION \ --region=REGION \ --tier=TIER \ --edition=EDITION_TYPE \ --performance-capture-config="enabled=true,PROBE_CONFIGURATION,PERFORMANCE_CAPTURE_THRESHOLDS"
替换以下内容:
- INSTANCE_NAME:实例名称
- DATABASE_VERSION:数据库版本。例如:
MYSQL_8_4或MYSQL_8_0_37。如果您未指定数据库版本,则默认数据库版本为MYSQL_8_0。 - REGION:区域
- TIER:您的机器类型
- EDITION_TYPE:您的 Cloud SQL 版本
对于 performance-capture-config 标志,请添加 enabled=true。在同一标志定义中,您可以为 PROBE_CONFIGURATION 和 PERFORMANCE_CAPTURE_THRESHOLDS 指定可选配置,也可以稍后通过更新实例来指定。
例如:
gcloud beta sql instances create my-instance \ --database-version=MYSQL_8_0 \ --edition=ENTERPRISE_PLUS \ --tier=db-perf-optimized-N-4 \ --region=us-west1 \ --performance-capture-config="enabled=true,probing-interval-seconds=30,probe-threshold=5,running-threads-threshold=10,transaction-duration-threshold=300"
更新现有实例
如需为现有 Cloud SQL 实例启用性能捕获,请运行以下命令:
gcloud beta sql instances patch INSTANCE_NAME \ --performance-capture-config="enabled=true,PROBE_CONFIGURATION,PERFORMANCE_CAPTURE_THRESHOLDS"
对于 performance-capture-config 标志,请添加 enabled=true。
对于同一标志,您可以为 PROBE_CONFIGURATION 和 PERFORMANCE_CAPTURE_THRESHOLDS 指定可选配置。
您还可以使用 gcloud beta sql instances patch 命令更新现有实例上性能捕获的阈值配置值。
配置性能指标的探测间隔和连续探测次数
您可以将 PROBE_CONFIGURATION 替换为以下一个或两个标志设置。如果您未设置标志,则监控代理会使用默认值。
probing-interval-seconds=SECONDS:介于20和86400之间的整数。指标探测之间的时间间隔(以秒为单位)。 例如,30、60、100。 默认值为30。probe-threshold=PROBES:必须连续超过阈值的次数,才能触发性能捕获。 有效范围是1到20。 默认值为3。
配置性能捕获阈值
您可以将 PERFORMANCE_CAPTURE_THRESHOLDS 替换为以下一个或多个标志设置。如果您未设置标志的值,监控代理会使用阈值的默认值。
running-threads-threshold=THREADS:对于主实例,被视为超过阈值的活跃线程数下限。例如10。必须大于或等于10。 如果未设置,则默认值取决于实例的大小。 默认值为MIN(600, cpuCount * 20)。seconds-behind-source-threshold=SECONDS:对于读取副本,被视为超出阈值的最小复制延迟时间(以秒为单位)。必须大于0。 默认值为900。transaction-duration-threshold=SECONDS:未提交的事务在被跟踪并纳入性能捕获日志之前的时长(以秒为单位)。 例如300、600。最小值为60。 默认值为3600。
REST v1
创建和配置实例
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的项目 ID
- INSTANCE_ID:您的实例 ID
- DATABASE_VERSION:数据库版本。例如:
MYSQL_8_4或MYSQL_8_0_37。如果您未指定数据库版本,则默认数据库版本为MYSQL_8_0。 - REGION:区域
- MACHINE_TYPE:您的机器类型
- EDITION_TYPE:您的 Cloud SQL 版本
- PROBING_INTERVAL_SECONDS:介于
20和86400之间的整数。 指标探测之间的时间间隔(以秒为单位)。默认值为30。 - PROBE_THRESHOLD:必须连续超过阈值的次数,才能触发性能捕获。有效范围是
1到20。默认值为3。 - RUNNING_THREADS_THRESHOLD:对于主实例,被视为超过阈值的活跃线程数下限。例如
10。必须大于或等于10。 如果未设置,则默认值取决于实例的大小。 默认值为MIN(600, cpuCount * 20)。 - SECONDS_BEHIND_SOURCE_THRESHOLD:对于读取副本,被视为超过阈值的最小复制延迟时间(以秒为单位)。必须大于
0。默认值为900。 - TRANSACTION_DURATION_THRESHOLD:未提交的事务在被跟踪并纳入性能捕获日志之前的时长(以秒为单位)。
例如
300、600。最小值为60。默认值为3600。
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
请求 JSON 正文:
{
"name": "INSTANCE_ID",
"region": "REGION",
"databaseVersion": "DATABASE_VERSION",
"settings": {
"tier": "MACHINE_TYPE",
"edition": "EDITION_TYPE"
},
"performanceCaptureConfig": {
"enabled": true,
"probingIntervalSeconds": PROBING_INTERVAL_SECONDS,
"probeThreshold": PROBE_THRESHOLD,
"runningThreadsThreshold": RUNNING_THREADS_THRESHOLD,
"secondsBehindSourceThreshold": SECONDS_BEHIND_SOURCE_THRESHOLD,
"transactionDurationThreshold": TRANSACTION_DURATION_THRESHOLD
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2025-11-10T22:19:33.735Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
更新现有实例
在使用任何请求数据之前,请先进行以下替换:
- PERFORMANCE_CAPTURE_ENABLE:设置为
true可为您的实例启用性能捕获。 - PROBING_INTERVAL_SECONDS:介于
20和86400之间的整数。 指标探测之间的时间间隔(以秒为单位)。默认值为30。 - PROBE_THRESHOLD:必须连续超过阈值的次数,才能触发性能捕获。有效范围是
1到20。默认值为3。 - RUNNING_THREADS_THRESHOLD:对于主实例,被视为超过阈值的活跃线程数下限。例如
10。必须大于或等于10。 如果未设置,则默认值取决于实例的大小。 默认值为MIN(600, cpuCount * 20)。 - SECONDS_BEHIND_SOURCE_THRESHOLD:对于读取副本,被视为超过阈值的最小复制延迟时间(以秒为单位)。必须大于
0。默认值为900。 - TRANSACTION_DURATION_THRESHOLD:未提交的事务在被跟踪并纳入性能捕获日志之前的时长(以秒为单位)。
例如
300、600。最小值为60。默认值为3600。
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"performanceCaptureConfig": {
"enabled": PERFORMANCE_CAPTURE_ENABLE,
"probingIntervalSeconds": PROBING_INTERVAL_SECONDS,
"probeThreshold": PROBE_THRESHOLD,
"runningThreadsThreshold": RUNNING_THREADS_THRESHOLD,
"secondsBehindSourceThreshold": SECONDS_BEHIND_SOURCE_THRESHOLD,
"transactionDurationThreshold": TRANSACTION_DURATION_THRESHOLD
},
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2025-11-10T22:19:33.735Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
创建和配置实例
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的项目 ID
- INSTANCE_ID:您的实例 ID
- DATABASE_VERSION:数据库版本。例如:
MYSQL_8_4或MYSQL_8_0_37。如果您未指定数据库版本,则默认数据库版本为MYSQL_8_0。 - REGION:区域
- MACHINE_TYPE:您的机器类型
- EDITION_TYPE:您的 Cloud SQL 版本
- PROBING_INTERVAL_SECONDS:介于
20和86400之间的整数。 指标探测之间的时间间隔(以秒为单位)。默认值为30。 - PROBE_THRESHOLD:必须连续超过阈值的次数,才能触发性能捕获。有效范围是
1到20。默认值为3。 - RUNNING_THREADS_THRESHOLD:对于主实例,被视为超过阈值的最小活跃线程数。例如
10。必须大于或等于10。 如果未设置,则默认值取决于实例的大小。 默认值为MIN(600, cpuCount * 20)。 - SECONDS_BEHIND_SOURCE_THRESHOLD:对于读取副本,被视为超过阈值的最小复制延迟时间(以秒为单位)。必须大于
0。默认值为900。 - TRANSACTION_DURATION_THRESHOLD:未提交的事务在被跟踪并纳入性能捕获日志之前的时长(以秒为单位)。
例如
300、600。最小值为60。默认值为3600。
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
请求 JSON 正文:
{
"name": "INSTANCE_ID",
"region": "REGION",
"databaseVersion": "DATABASE_VERSION",
"settings": {
"tier": "MACHINE_TYPE",
"edition": "EDITION_TYPE",
},
"performanceCaptureConfig": {
"enabled": true,
"probingIntervalSeconds": PROBING_INTERVAL_SECONDS,
"probeThreshold": PROBE_THRESHOLD,
"runningThreadsThreshold": RUNNING_THREADS_THRESHOLD,
"secondsBehindSourceThreshold": SECONDS_BEHIND_SOURCE_THRESHOLD,
"transactionDurationThreshold": TRANSACTION_DURATION_THRESHOLD
},
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2025-11-10T22:19:33.735Z",
"operationType": "CREATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
更新现有实例
在使用任何请求数据之前,请先进行以下替换:
- PERFORMANCE_CAPTURE_ENABLE:设置为
true可为您的实例启用性能捕获。 - PROBING_INTERVAL_SECONDS:介于
20和86400之间的整数。 指标探测之间的时间间隔(以秒为单位)。默认值为30。 - PROBE_THRESHOLD:必须连续超过阈值的次数,才能触发性能捕获。有效范围是
1到20。默认值为3。 - RUNNING_THREADS_THRESHOLD:对于主实例,被视为超过阈值的活跃线程数下限。例如
10。必须大于或等于10。 如果未设置,则默认值取决于实例的大小。 默认值为MIN(600, cpuCount * 20)。 - SECONDS_BEHIND_SOURCE_THRESHOLD:对于读取副本,被视为超过阈值的最小复制延迟时间(以秒为单位)。必须大于
0。默认值为900。 - TRANSACTION_DURATION_THRESHOLD:未提交的事务在被跟踪并纳入性能捕获日志之前的时长(以秒为单位)。
例如
300、600。最小值为60。默认值为3600。
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"performanceCaptureConfig": {
"enabled": PERFORMANCE_CAPTURE_ENABLE,
"probingIntervalSeconds": PROBING_INTERVAL_SECONDS,
"probeThreshold": PROBE_THRESHOLD,
"runningThreadsThreshold": RUNNING_THREADS_THRESHOLD,
"secondsBehindSourceThreshold": SECONDS_BEHIND_SOURCE_THRESHOLD,
"transactionDurationThreshold": TRANSACTION_DURATION_THRESHOLD
},
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2025-11-10T22:19:33.735Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
停用性能捕获
如需停用性能捕获,请使用以下命令。
gcloud
gcloud beta sql instances patch INSTANCE_NAME \ --performance-capture-config="enabled=false"
将 INSTANCE_NAME 替换为您要停用性能捕获功能的实例的名称。
REST v1
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"performanceCaptureConfig": {
"enabled": false
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "INSERT_TIME",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}
REST v1beta4
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"performanceCaptureConfig": {
"enabled": false
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2025-11-10T22:19:33.735Z",
"operationType": "UPDATE",
"name": "OPERATION_ID",
"targetId": "INSTANCE_ID",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
"targetProject": "PROJECT_ID"
}