本页面介绍如何监控数据库中的活跃查询并对这些查询进行问题排查。活跃查询是指数据库中运行时间较长的查询,可能会影响性能。监控这些查询有助于确定出现系统延迟和 CPU 使用率较高的原因。
您可以在 Query Insights 信息中心内查看活跃查询。这些查询按事务开始时间进行显示。如果正在运行大量查询,则由于系统对数据收集实施内存限制,结果可能会仅限于总查询的一部分。
准备工作
如需开始查看活跃查询,您必须启用增强型 Query Insights,并为您的实例开启活跃查询分析,具体方法如下:
在 Google Cloud 控制台中,前往集群页面。
点击 Query Insights。
点击修改设置。
在修改查询数据分析设置窗口中,依次选择启用增强型查询数据分析 > 活跃查询分析。
点击保存更改。
在更改需要重启窗口中,点击确认并重启。
您可以使用 Gemini in Databases 协助功能来帮助您监控 AlloyDB for PostgreSQL 资源并排查问题。如需了解详情,请参阅在 Gemini 的协助下进行监控和问题排查。
查看活跃查询
如需查看活跃查询,请执行以下操作:
创建自定义角色并添加
databaseinsights.monitoringViewer
Identity and Access Management (IAM) 权限。为查看活跃查询的每位用户添加此角色。
在 Google Cloud 控制台中,打开 AlloyDB 页面。
点击集群名称,打开其概览页面。
选择 Query Insights 标签页。 查询数据分析信息中心会显示所选集群的详细信息。
点击活动查询视图标签页。 该标签页包含正在运行的活跃查询的摘要,以及运行时间最长的前 50 个事务。
您可以按以下任一条件过滤信息:
- 数据库:过滤特定数据库或所有数据库上的查询负载。
- 用户:过滤来自特定数据库用户或所有用户的查询负载。
- 节点 ID:仅针对读取池实例显示;过滤特定读取池实例节点或所有节点上的查询负载。
所有标准化活跃查询的摘要统计信息摘要:通过基于以下参数显示总连接数,来提供所有活跃查询的概览:
- 按连接状态分类的活跃连接分布。
- 基于不同等待事件类型的活跃连接分布。
- 非空闲状态查询的事务时长分布。
运行时间最长的事务:按执行时间降序提供处于
active
和idle in transaction
状态的前 50 个正在运行的查询的概览。
您可以在 Query Insights 信息中心内查看包含规范化活跃查询的排名前 50 的查询列表。
规范化活跃查询会移除敏感数据并返回摘要。除了 WHERE 子句值之外完全相同的两个查询具有相同的摘要。例如,请考虑以下三个示例查询:
select * from my_table where id = 1;
select * from my_table where id = 2;
select * from my_table where id = 100;
这些查询的规范化版本如下所示:
select * from my_table where id = ?;
在不同会话中运行的查询会在信息中心上显示为不同的条目。
查看运行时间最长的排名靠前事务
下表介绍了 Query Insights 信息中心内的运行时间最长的事务表的各列:
列名 | 说明 |
---|---|
进程 ID | 进程 ID 是数据库连接的唯一标识符。 |
节点 ID | 节点 ID 是查询在其上运行的读取池实例节点的唯一标识符。 |
查询 | 标准化 SQL 查询文本。 |
状态 | 连接的当前状态。状态值包括 active 和 idle in transaction 。 |
会话时长 | 当前会话的时长(以秒为单位)。 |
事务时长 | 当前事务的时长(以秒为单位)。 |
查询时长 | 当前活跃查询的时长(以秒为单位)。处于 idle in transaction 状态的查询的查询时长为 0 ,因为它们并非正在活跃运行。 |
等待事件类型 | 查询执行期间发生的等待事件的类型。 |
等待事件 | 查询执行期间发生的等待事件。 |
数据库 | 运行此连接的数据库名称。 |
应用名称 | 运行此连接的应用名称。 |
用户名 | 连接到数据库的数据库用户的名称。 |
客户端地址 | 发送查询的客户端的特定 IP 地址。 |
操作 | 包含用于终止事务的链接。 |
显示的内容每 60 秒自动刷新一次。
使用数据库和用户字段进行过滤会刷新页面上的数据。
如需分析静态数据,请停用自动刷新,并根据需要使用最长运行事务表的过滤器字段。
终止查询或事务
如需终止查询或事务,您必须拥有 databaseinsights.operationsAdmin
角色。如需了解详情,请参阅 IAM 基本角色和预定义角色参考文档。
一个事务可以包含多个查询。如需确定哪些查询目前处于有效状态,请参阅运行时间最长的事务表中的查询列。
如需终止查询或事务,请完成以下步骤:
- 在运行时间最长的事务表中选择相应查询。
- 向右滚动到操作列。
- 点击终止连接。
在终止连接窗口中,点击确认。
页面会在启动终止后刷新。如果终止失败,则页面会处于静默状态,且查询会继续显示在“活动查询”列表中。如果终止成功,则查询不再显示在该列表中。