本页面介绍了如何使用查询数据分析信息中心检测和分析性能问题。
简介
Query Insights 可帮助您检测、诊断和阻止 Cloud SQL 数据库的查询性能问题。它支持直观监控并提供诊断信息,帮助您在检测范围之外确定性能问题的根本原因。
查询数据分析可以指导您完成以下步骤,帮助您提高 Cloud SQL 查询性能:
适用于 Cloud SQL 企业 Plus 版的 Query Insights
如果您使用的是 Cloud SQL 企业 Plus 版,则可以在 Query Insights 中访问其他功能,以执行高级查询性能诊断。除了 Query Insights 信息中心的标准功能之外,适用于 Cloud SQL 企业 Plus 版的 Query Insights 还可让您执行以下操作:
- 捕获更长的查询文本(最多 20 KB)
- 维持更长的 30 天指标保留期限
- 从索引顾问处获取索引建议
- 终止活跃查询中的会话
下表比较了适用于 Cloud SQL 企业版的 Query Insights 与适用于 Cloud SQL 企业 Plus 版的 Query Insights 的功能要求和功能。
比较领域 | 适用于 Cloud SQL 企业版的 Query Insights | 适用于 Cloud SQL 企业 Plus 版的 Query Insights |
---|---|---|
支持的数据库版本 |
以下实例的所有版本:
SQL Server Express 版本实例不支持 Query Insights |
SQL Server Enterprise 版本 2019 或 2022 |
支持的机器类型 | 所有机器类型都支持 | 使用共享核心机器类型的实例不支持 |
支持的区域 | Cloud SQL 区域位置 | Cloud SQL 企业 Plus 版区域位置 |
指标保留期限 | 7 天 | 30 天 |
查询长度上限 | 4500 字节 | 20 KB |
索引顾问建议 | 不可用 | 可用 |
终止活跃查询中的会话 | 不可用 | 可用 |
如需在预览版期间为 Cloud SQL 企业 Plus 版实例启用适用于 Cloud SQL 企业 Plus 版的 Query Insights,请按照启用适用于 Cloud SQL 企业 Plus 版的 Query Insights 中的步骤操作。
价格
Query Insights 不会产生额外费用。此外,可免费启用适用于 Cloud SQL 企业 Plus 版的 Query Insights,该功能目前处于预览版阶段。
存储空间要求
Query Insights 会在实例上存储指标数据,并且需要您使存储空间自动扩容设置保持启用状态。需支付适用的存储空间费用。
准备工作
在使用 Query Insights 之前,请执行以下操作。
- 添加所需的角色和权限。
- 确保为实例启用启用存储空间自动扩容功能这一设置。
所需的角色和权限
如需使用 Query Insights,您需要授予具有所需 Identity and Access Management 权限的角色,或者为用户账号提供所需权限。
如需详细了解如何授予角色,请参阅管理访问权限。
如需获得访问 Query Insights 信息中心内的历史查询执行数据所需的权限,请让您的管理员向您授予托管 Cloud SQL 实例的项目的以下 IAM 角色:
-
Database Insights Monitoring Viewer (
roles/databaseinsights.monitoringViewer
) -
Cloud SQL Viewer (
roles/cloudsql.viewer
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含访问 Query Insights 信息中心内的历史查询执行数据所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
您需要具备以下权限才能访问 Query Insights 信息中心内的历史查询执行数据:
-
databaseinsights.aggregatedStats.query
-
databaseinsights.timeSeries.query
roles/databaseinsights.viewer
) 预定义角色。然后在 Cloud SQL 中,您可以让管理员向您授予以下预定义角色之一:
- Cloud SQL Editor (
roles/cloudsql.editor
) - Cloud SQL Admin (
roles/cloudsql.admin
)
启用存储空间自动扩容功能
确保用于启用存储空间自动扩容功能的实例设置保持启用状态。如果您之前停用了此实例设置,请先重新启用存储空间自动扩容功能,然后再启用 Query Insights。
启用 Query Insights
有权访问 Cloud SQL 信息中心的用户可以访问 Query Insights 指标。如果您有权更新实例,则可以启用 Query Insights。如需查看 Cloud SQL 实例所需的权限列表,请参阅 Cloud SQL 项目访问权限控制。如果您没有这些权限,并且想要在实例上启用 Query Insights,请与您的管理员联系。
控制台
为实例启用 Query Insights
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 在配置图块中,点击修改配置。
- 在自定义实例部分中,展开 Query Insights。
- 选中启用查询数据分析复选框。
- 可选。选择以下一个或多个查询 Query Insights 附加功能:
- 点击保存。
自定义查询长度
默认值:1024
将查询长度限制设置为 256 字节到 4500 字节范围内的指定值。更高的查询长度对于分析查询更有用,但也需要更多内存。更改查询长度需要重启实例。
为多个实例启用 Query Insights
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 点击任意行上的更多操作 菜单。
- 选择启用查询数据分析。
- 在对话框中,选中为多个实例启用 Query Insights 复选框。
- 点击启用。
- 在随后出现的对话框中,选择您要为其启用 Query Insights 的实例。
- 点击启用查询数据分析。
gcloud
如需使用 gcloud
为 Cloud SQL 实例启用 Query Insights,请在将 INSTANCE_ID 替换为实例的 ID 后运行带有 --insights-config-query-insights-enabled
标志的 gcloud sql instances patch
,如下所示。
gcloud sql instances patch INSTANCE_ID \ --insights-config-query-insights-enabled
此外,请使用以下一个或多个可选标志:
--insights-config-query-string-length
将默认查询长度限制设置为 256 到 4500 字节范围内的指定值。默认查询长度为 1024 字节。更高的查询长度对于分析查询更有用,但也需要更多内存。更改查询长度需要重启实例。
替换以下内容:
- INSIGHTS_CONFIG_QUERY_STRING_LENGTH:要存储的查询字符串长度(以字节为单位)。
- API_TIER_STRING:用于实例的自定义实例配置。
- REGION:实例的区域。
gcloud sql instances patch INSTANCE_ID \ --insights-config-query-insights-enabled \ --insights-config-query-string-length=INSIGHTS_CONFIG_QUERY_STRING_LENGTH \ --tier=API_TIER_STRING \ --region=REGION
REST v1
如需使用 REST API 为 Cloud SQL 实例启用 Query Insights,请使用 insightsConfig
设置调用 instances.patch
方法。
在使用任何请求数据之前,请先进行以下替换:
- project-id:项目 ID。
- instance-id:实例 ID。
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
请求 JSON 正文:
{ "settings" : { "insightsConfig" : { "queryInsightsEnabled" : true } } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2021-01-28T22:43:40.009Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Terraform
如需使用 Terraform 为 Cloud SQL 实例启用 Query Insights,请将 query_insights_enabled
标志设置为 true
。
此外,您可以使用以下一个或多个可选标志:
-
query_string_length
:默认值为1024
,您可以将其配置为256
到4500
之间的值(以字节为单位)。 record_application_tags
:如果要记录查询中的应用标记,请将值设置为true
。record_client_address
:如果要记录客户端 IP 地址,请将值设置为true
。query_plans_per_minute
:默认值为5
,您可以将其配置为5
到20
之间的值。
示例如下:
如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。
准备 Cloud Shell
- 启动 Cloud Shell。
-
设置要在其中应用 Terraform 配置的默认 Google Cloud 项目。
您只需为每个项目运行一次以下命令,即可在任何目录中运行它。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。
准备目录
每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。
-
在 Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有
.tf
扩展名,例如main.tf
。在本教程中,该文件称为main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。
将示例代码复制到新创建的
main.tf
中。(可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。
- 查看和修改要应用到您的环境的示例参数。
- 保存更改。
-
初始化 Terraform。您只需为每个目录执行一次此操作。
terraform init
(可选)如需使用最新的 Google 提供程序版本,请添加
-upgrade
选项:terraform init -upgrade
应用更改
-
查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
terraform plan
根据需要更正配置。
-
通过运行以下命令并在提示符处输入
yes
来应用 Terraform 配置:terraform apply
等待 Terraform 显示“应用完成!”消息。
- 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。
Query Insights 在查询完成后的几分钟内就可以提供指标。
启用适用于 Cloud SQL 企业 Plus 版的 Query Insights
您只能使用 Google Cloud 控制台为 Cloud SQL 实例启用适用于 Cloud SQL 企业 Plus 版的 Query Insights。
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 点击修改。
- 在存储空间部分,确认已选中启用存储空间自动扩容功能复选框。
- 在自定义实例部分中,展开 Query Insights。
- 选中启用企业 Plus 版功能复选框。
启用适用于 Cloud SQL 企业 Plus 版的 Query Insights 后,您可以更新以下字段:
自定义查询长度:指定查询长度的限制(以字节为单位)。您可以指定
256
到20480
之间的数字。任何超出指定限制的查询字符串在显示时都会被截断。查询长度限制越高,需要的内存就越多。默认值为10240
字节 (10 KB)。
点击保存。
查看查询数据分析信息中心
查询数据分析信息中心会基于您选择的因素显示查询负载。查询负载是衡量选定时间范围内实例中所有查询的总工作量。 该信息中心提供了一系列过滤条件,可帮助您查看查询负载。
如需打开查询数据分析信息中心,请按照以下步骤操作:
- 如需打开实例的概览页面,请点击实例名称。
- 选择左侧导航面板中的 Query Insights 标签页,或点击前往“查询数据分析”,详细了解查询和性能链接。
查询数据分析信息中心将会打开。它会显示有关实例的以下信息:

- 数据库:过滤特定数据库或所有数据库上的查询负载。
- 时间范围:按时间范围(如 1 小时、6 小时、1 天、7 天、30 天或自定义范围)过滤查询。
- 数据库负载图表:根据过滤的数据显示查询负载图表。
- 查询和数据库:按所选查询或所选数据库过滤查询负载。请参阅过滤数据库负载。
查看所有查询的数据库负载
数据库查询负载用于衡量所选数据库中执行的查询在一段时间内所执行的工作(以 CPU 秒为单位)。每个正在运行的查询都使用或等待 CPU 资源、IO 资源或锁定资源。数据库查询负载是在给定时间范围内完成的所有查询所花费的时间与挂钟时间之比。
顶级 Query Insights 信息中心显示数据库负载(按执行时间)图表。通过该信息中心上的下拉菜单,您可以针对所有数据库或特定数据库过滤该图表。

图表中的彩色线条表示每个数据库负载(按执行时间)。查看图表并使用过滤选项来探索以下问题:
- 查询负载较高吗?图表是否随着时间推移出现峰值或上升?如果未看到高负载,则问题与您的查询无关。
- 负载高的时间有多长?是现在才高还是长时间都高?使用范围选择器选择不同的时间段,以了解问题持续了多长时间。放大可查看观察到查询负载峰值的时间窗口。缩小可查看长达一周的时间轴。
- 哪个数据库遇到了负载?从“数据库”下拉菜单中选择不同的数据库,找出负载最高的数据库。
过滤数据库负载
您可以按查询过滤数据库负载。如果您在使用适用于 Cloud SQL 企业 Plus 版的 Query Insights,则可以自定义数据库负载图表,以使用以下任一维度细分显示的数据:所有查询
数据库
如需自定义数据库负载图表,请从数据库负载(按执行时间)下拉菜单中选择一个维度。
查看数据库负载的主要影响因素
如需查看数据库负载的主要影响因素,您可以使用主要维度(按数据库负载)表格。主要维度(按数据库负载)表格会针对您在数据库负载(按执行时间)图表下拉菜单中选择的时间段和维度,显示相应的主要影响因素。您可以修改时间段或维度,以查看不同维度或时间段的相应主要影响因素。
在主要维度(按数据负载)表格中,您可以选择以下标签页。
Tab | 说明 |
---|---|
查询 | 表格会按总执行时间显示热门标准化查询。
对于每个查询,列中显示的数据如下所示:
|
数据库 | 表格会列出在所选时间段内所有执行的查询中对负载产生影响的主要数据库。
|
按查询过滤
查询表概述了导致查询加载次数最多的查询。下表显示了查询数据分析信息中心内所选时间范围和选项的所有标准化查询。它会按您选择的时间段内总执行时间对查询排序。
如需对表格进行排序,请选择列标题。表格会显示以下属性:
- 查询:标准化查询字符串。默认情况下,Query Insights 仅显示查询字符串中的 1024 个字符。
- 数据库:对其运行查询的数据库。
- 平均执行时间(毫秒):查询执行的平均时间。
- 总执行时间(毫秒):查询执行的总时间。
- 调用次数:应用调用查询的次数。
- 返回的平均行数:为查询返回的平均行数。
Query Insights 仅存储和显示标准化查询。
停用 Query Insights
控制台
如需使用 Google Cloud 控制台为 Cloud SQL 实例停用 Query Insights,请按照以下步骤操作:
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 在配置图块中,点击修改配置。
- 在配置选项部分中,展开查询数据分析。
- 取消选中启用查询数据分析复选框。
- 点击保存。
gcloud
如需使用 gcloud
为 Cloud SQL 实例停用 Query Insights,请在将 INSTANCE_ID 替换为实例的 ID 后运行带有 --no-insights-config-query-insights-enabled
标志的 gcloud sql instances patch
,如下所示。
gcloud sql instances patch INSTANCE_ID
--no-insights-config-query-insights-enabled
REST
如需使用 REST API 为 Cloud SQL 实例停用 Query Insights,请调用 instances.patch
方法并将 queryInsightsEnabled
设置为 false
,如下所示。
在使用任何请求数据之前,请先进行以下替换:
- project-id:项目 ID。
- instance-id:实例 ID。
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
请求 JSON 正文:
{ "settings" : { "insightsConfig" : { "queryInsightsEnabled" : 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": "2021-01-28T22:43:40.009Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
停用适用于 Cloud SQL 企业 Plus 版的 Query Insights
如需停用适用于 Cloud SQL 企业 Plus 版的 Query Insights,请执行以下操作:
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 如需打开实例的概览页面,请点击实例名称。
- 点击修改。
- 在自定义实例部分中,展开 Query Insights。
- 清除启用企业 Plus 版功能复选框。
- 点击保存。
后续步骤
- 发布博客:为开发者提供数据库可观测性:隆重推出 Cloud SQL Insights
- 博客:使用 Cloud SQL Insights 提升您的查询性能问题排查技能
- 视频:介绍 Cloud SQL Insights
- 播客:Cloud SQL Insights
- Insights Codelab
- 优化高 CPU 用量
- 优化高内存用量