配置性能捕获

借助性能捕获,您可以在性能下降时捕获实例的详细指标,从而诊断数据库的暂时性问题。 如需使用性能捕获功能,请为实例启用性能捕获功能,并配置触发 Cloud SQL 实例的详细指标快照的阈值。

准备工作

如需使用性能捕获,您必须为实例启用 Query Insights

所需的角色

如需获得创建实例和启用性能捕获所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

启用和配置性能捕获

您可以在创建或更新 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_4MYSQL_8_0_37。如果您未指定数据库版本,则默认数据库版本为 MYSQL_8_0
  • REGION:区域
  • TIER:您的机器类型
  • EDITION_TYPE:您的 Cloud SQL 版本

对于 performance-capture-config 标志,请添加 enabled=true。在同一标志定义中,您可以为 PROBE_CONFIGURATIONPERFORMANCE_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_CONFIGURATIONPERFORMANCE_CAPTURE_THRESHOLDS 指定可选配置。

您还可以使用 gcloud beta sql instances patch 命令更新现有实例上性能捕获的阈值配置值。

配置性能指标的探测间隔和连续探测次数

您可以将 PROBE_CONFIGURATION 替换为以下一个或两个标志设置。如果您未设置标志,则监控代理会使用默认值。

  • probing-interval-seconds=SECONDS:介于 2086400 之间的整数。指标探测之间的时间间隔(以秒为单位)。 例如,3060100。 默认值为 30
  • probe-threshold=PROBES:必须连续超过阈值的次数,才能触发性能捕获。 有效范围是 120。 默认值为 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:未提交的事务在被跟踪并纳入性能捕获日志之前的时长(以秒为单位)。 例如 300600。最小值为 60。 默认值为 3600

REST v1

创建和配置实例

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID
  • INSTANCE_ID:您的实例 ID
  • DATABASE_VERSION:数据库版本。例如:MYSQL_8_4MYSQL_8_0_37。如果您未指定数据库版本,则默认数据库版本为 MYSQL_8_0
  • REGION:区域
  • MACHINE_TYPE:您的机器类型
  • EDITION_TYPE:您的 Cloud SQL 版本
  • PROBING_INTERVAL_SECONDS:介于 2086400 之间的整数。 指标探测之间的时间间隔(以秒为单位)。默认值为 30
  • PROBE_THRESHOLD:必须连续超过阈值的次数,才能触发性能捕获。有效范围是 120。默认值为 3
  • RUNNING_THREADS_THRESHOLD:对于主实例,被视为超过阈值的活跃线程数下限。例如 10。必须大于或等于 10。 如果未设置,则默认值取决于实例的大小。 默认值为 MIN(600, cpuCount * 20)
  • SECONDS_BEHIND_SOURCE_THRESHOLD:对于读取副本,被视为超过阈值的最小复制延迟时间(以秒为单位)。必须大于 0。默认值为 900
  • TRANSACTION_DURATION_THRESHOLD:未提交的事务在被跟踪并纳入性能捕获日志之前的时长(以秒为单位)。 例如 300600。最小值为 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:介于 2086400 之间的整数。 指标探测之间的时间间隔(以秒为单位)。默认值为 30
  • PROBE_THRESHOLD:必须连续超过阈值的次数,才能触发性能捕获。有效范围是 120。默认值为 3
  • RUNNING_THREADS_THRESHOLD:对于主实例,被视为超过阈值的活跃线程数下限。例如 10。必须大于或等于 10。 如果未设置,则默认值取决于实例的大小。 默认值为 MIN(600, cpuCount * 20)
  • SECONDS_BEHIND_SOURCE_THRESHOLD:对于读取副本,被视为超过阈值的最小复制延迟时间(以秒为单位)。必须大于 0。默认值为 900
  • TRANSACTION_DURATION_THRESHOLD:未提交的事务在被跟踪并纳入性能捕获日志之前的时长(以秒为单位)。 例如 300600。最小值为 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_4MYSQL_8_0_37。如果您未指定数据库版本,则默认数据库版本为 MYSQL_8_0
  • REGION:区域
  • MACHINE_TYPE:您的机器类型
  • EDITION_TYPE:您的 Cloud SQL 版本
  • PROBING_INTERVAL_SECONDS:介于 2086400 之间的整数。 指标探测之间的时间间隔(以秒为单位)。默认值为 30
  • PROBE_THRESHOLD:必须连续超过阈值的次数,才能触发性能捕获。有效范围是 120。默认值为 3
  • RUNNING_THREADS_THRESHOLD:对于主实例,被视为超过阈值的最小活跃线程数。例如 10。必须大于或等于 10。 如果未设置,则默认值取决于实例的大小。 默认值为 MIN(600, cpuCount * 20)
  • SECONDS_BEHIND_SOURCE_THRESHOLD:对于读取副本,被视为超过阈值的最小复制延迟时间(以秒为单位)。必须大于 0。默认值为 900
  • TRANSACTION_DURATION_THRESHOLD:未提交的事务在被跟踪并纳入性能捕获日志之前的时长(以秒为单位)。 例如 300600。最小值为 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:介于 2086400 之间的整数。 指标探测之间的时间间隔(以秒为单位)。默认值为 30
  • PROBE_THRESHOLD:必须连续超过阈值的次数,才能触发性能捕获。有效范围是 120。默认值为 3
  • RUNNING_THREADS_THRESHOLD:对于主实例,被视为超过阈值的活跃线程数下限。例如10。必须大于或等于 10。 如果未设置,则默认值取决于实例的大小。 默认值为 MIN(600, cpuCount * 20)
  • SECONDS_BEHIND_SOURCE_THRESHOLD:对于读取副本,被视为超过阈值的最小复制延迟时间(以秒为单位)。必须大于 0。默认值为 900
  • TRANSACTION_DURATION_THRESHOLD:未提交的事务在被跟踪并纳入性能捕获日志之前的时长(以秒为单位)。 例如 300600。最小值为 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"
}

后续步骤