监控活跃查询

本页面介绍如何监控数据库中的活跃查询并对这些查询进行问题排查。活跃查询是指数据库中长时间运行且可能影响性能的查询。监控这些查询有助于确定出现系统延迟和 CPU 使用率较高的原因。

您可以在 Query Insights 信息中心内查看活跃查询。这些查询按事务开始时间进行显示。如果正在运行大量查询,则由于系统对数据收集实施的内存限制,结果可能会仅限于总查询的一部分。

准备工作

如需开始查看活跃查询,您必须启用高级 Query Insights 功能,并为您的实例开启活跃查询分析,如下所示:

  1. 在 Google Cloud 控制台中,前往集群页面。

    转到集群

  2. 在集群和实例列表中,点击主实例读取池实例

  3. 点击 Query Insights

  4. 点击 Edit Settings(修改设置)。

  5. 修改 Query Insights 设置窗口中,依次选择启用 AlloyDB 高级 Query Insights 功能 > 活跃查询分析

  6. 点击保存更改

  7. 更改需要重启窗口中,点击确认并重启

您可以使用 Gemini Cloud Assist 协助来帮助您监控 AlloyDB for PostgreSQL 资源并对其进行问题排查。如需了解详情,请参阅使用 Gemini 协助进行监控和问题排查

查看活跃查询

如需查看活跃查询,请执行以下操作:

  1. 创建自定义角色并添加 databaseinsights.monitoringViewer Identity and Access Management (IAM) 权限。

  2. 为查看活跃查询的每位用户添加此角色。

  3. 在 Google Cloud 控制台中,打开 AlloyDB 页面。

    前往 AlloyDB

  4. 点击集群名称,打开其概览页面。

  5. 选择 Query Insights 标签页。 Query Insights 信息中心会显示所选集群的详细信息。

  6. 点击活跃查询视图标签页。 该标签页包含正在运行的活跃查询的摘要,以及运行时间最长的 50 个事务。

    您可以按以下任一条件过滤信息:

    • 数据库:过滤特定数据库或所有数据库上的查询负载。
    • 用户:过滤来自特定数据库用户或所有用户的查询负载。
    • 节点 ID:仅针对读取池实例显示;过滤特定读取池实例节点或所有节点上的查询负载。

    所有标准化活跃查询的统计信息摘要:通过基于以下参数显示总连接数,来提供所有活跃查询的概览:

    • 按连接状态分类的活跃连接分布。
    • 基于不同等待事件类型的活跃连接分布。
    • 不处于空闲状态的查询的事务时长分布。

    运行时间最长的事务:根据执行时间降序提供前 50 个正在运行的查询(处于 activeidle in transaction 活跃状态)的概览。

您可以在 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 查询文本。
状态 连接的当前状态。状态值包括 activeidle in transaction
会话时长 当前会话的时长(以秒为单位)。
事务时长 当前活跃事务的时长(以秒为单位)。
查询时长 当前活跃查询的时长(以秒为单位)。处于 idle in transaction 状态的查询的查询时长为 0,因为它们未正在运行。
等待事件类型 查询执行过程中发生的等待事件的类型。
等待事件 查询执行过程中发生的等待事件。
数据库 运行此连接的数据库名称。
应用名称 运行此连接的应用名称。
用户名 连接到数据库的数据库用户的名称。
客户端地址 发送查询的客户端的特定 IP 地址。
操作 包含用于终止事务的链接。

显示的内容每 60 秒自动刷新一次。

使用数据库用户字段进行过滤会刷新页面上的数据。

如需分析静态数据,请停用自动刷新,并根据需要使用运行时间最长的事务表中的过滤条件字段。

终止查询或事务

如需终止查询或事务,您必须拥有 databaseinsights.operationsAdmin 角色。如需了解详情,请参阅 IAM 基本角色和预定义角色参考文档

一个事务可以包含多个查询。如需确定哪些查询目前处于活跃状态,请查看运行时间最长的事务表中的查询列。

如需终止查询或事务,请完成以下步骤:

  1. 运行时间最长的事务表中,选择相应查询。
  2. 向右滚动到操作列。
  3. 点击终止连接
  4. 终止连接窗口中,点击确认

    页面会在启动终止后刷新。如果终止失败,则页面会处于静默状态,且查询会继续显示在“活动查询”列表中。如果终止成功,则查询不再显示在该列表中。

后续步骤