本页面介绍如何监控数据库中的活跃查询并对这些查询进行问题排查。监控这些查询有助于确定出现系统延迟和 CPU 使用率较高的原因。
在 Query Insights 信息中心,您可以查看活跃事务的摘要以及包含关联查询和统计信息的事务列表。事务按事务开始时间进行显示。如果正在运行大量查询,则结果可能仅限于总查询的一部分。
准备工作
如需监控活跃查询,您可以使用 Cloud SQL 企业版或 Cloud SQL 企业 Plus 版。
如需终止活跃查询中的会话或长时间运行的事务,您必须为 Cloud SQL 实例使用 Cloud SQL 企业 Plus 版。
如需������了解 Cloud SQL 版本,请参阅 Cloud SQL 版本简介。
所需的角色和权限
如需获得查看活跃查询所需的权限,请让您的管理员为您授予托管 Cloud SQL 实例的项目的以下 IAM 角色:
-
查看实例活动摘要:
Cloud SQL Viewer (
roles/cloudsql.viewer) -
查看数据库活动摘要和长时间运行的事务:
Database Insights Viewer (
roles/databaseinsights.viewer) -
终止会话或长时间运行的事务:
-
Cloud SQL Editor (
roles/cloudsql.editor) -
Database Insights Operations Admin (
roles/databaseinsights.operationsAdmin)
-
Cloud SQL Editor (
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含查看活跃查询所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需查看活跃查询,您需要具备以下权限:
- 查看数据库活动摘要和长时间运行的事务:
-
databaseinsights.activeQueries.fetch -
databaseinsights.activitySummary.fetch
-
启用活跃查询
启用Query Insights后,系统会自动启用活跃查询。如需终止活跃查询中的会话或长时间运行的事务,您必须使用 Cloud SQL 企业 Plus 版 Query Insights。
停用活跃查询
您无法在不停用 Query Insights 的情况下停用活跃查询。如需停用活跃查询和 Query Insights,请参阅停用 Query Insights。
查看活跃查询
如需查看活跃查询,请完成以下步骤:
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
如需打开实例的概览页面,请点击实例名称。
执行以下任一操作以显示 Query Insights 信息中心:
- 选择 Query Insights 标签页。
- 点击转到 Query Insights,详细了解查询和性能。 Query Insights 信息中心将会打开。顶部显示了实例的详细信息。
点击活跃查询标签页。
在这里,您可以修改运行时间最长的事务表中出现的查询信息:
- 数据库:过滤特定数据库或所有数据库上的查询负载。
- 用户:过滤来自特定用户账号的查询负载。
所有活跃查询的摘要统计信息摘要:通过基于以下参数显示总连接数,来提供所有活跃查询的概览:
- 按连接状态分类的活跃连接分布。
- 基于事务状态的活跃事务分布。
- 查询时长的分布。
- 运行时间最长的事务:按执行时间降序提供前 50 个正在运行的查询(处于活跃状态)的概览。您可以在表中对活跃查询进行过滤和排序。
查看规范化活跃查询
您可以在 Query Insights 信息中心内查看包含规范化活跃查询的长时间运行的排名靠前事务列表。规范化活跃查询会移除敏感数据并返回摘要。对于以下示例中使用的不同值,摘要是相同的:
常规查询
select * from test_table where id=1;select * from test_table_where id=2;
摘要或规范化查询
select * from test_table where id=?;
在不同会话中运行的查询会在信息中心上显示为不同的条目。
查看运行时间最长的排名靠前事务
Query Insights 信息中心内的运行时间最长的事务表包含以下列:
| 列名 | 说明 |
|---|---|
| 进程 ID | 连接的唯一标识符。 |
| 查询 | SQL 查询文本。 |
| 事务状态 | 事务的当前执行状态。允许的值包括 RUNNING、LOCK WAIT、ROLLING BACK 和 COMMITTING。 |
| 线程状态 | 线程状态(或查询状态)表示活跃线程的当前状态。 |
| 事务开始时间 | 事务开始执行时的时间戳。 |
| 事务时长 | 当前活跃事务的时长,以秒为单位。 |
| 事务等待时长 | 当前活跃事务的等待时长(以秒为单位)。 |
| 线程状态时长 | 查询已用时间。 |
| 事务行已锁定 | 当前活跃事务锁定的行数。 |
| 事务行已修改 | 当前活跃事务修改的行数。 |
| 数据库 | 运行此连接的数据库名称。 |
| 用户名 | 连接到数据库的用户的名称。 |
| 客户端地址 | 用户用于连接到数据库的客户端的 IP 地址。 |
| 操作 | 包含用于终止事务的链接。 |
显示的内容每 60 秒自动刷新一次。
您可以使用 内容显示选项… 垂直菜单来过滤要显示的列。
终止连接
如需终止活跃查询中的连接或长时间运行的事务,您必须使用 Cloud SQL 企业 Plus 版并启用 Cloud SQL 企业 Plus 版 Query Insights。
长时间运行的操作可能需要更长时间才能终止。
如需终止查询或事务,请完成以下步骤:
- 在运行时间最长的事务表中,选择一个查询。
- 在操作列中,点击终止连接。
- 在终止连接窗口中,点击确认。
终止操作会在后台进行,同时数据库请求会立即返回。
页面会在启动终止后刷新。如果终止失败,系统不会返回错误消息或通知。查询会继续显示在“活动查询”列表中。如果终止成功,则查询不再显示在该列表中。如果终止需要回滚,则事务状态列会显示“正在回滚”状态,这意味着终止仍在进行中。