监控活跃查询

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

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

准备工作

如需开始查看活跃查询,您必须启用高级查询分析功能,并为您的实例开启活跃查询分析,具体方法如下:

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

    转到集群

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

  3. 点击 Query Insights

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

  5. 修改查询数据分析设置窗口中,依次选择 Enable advanced query insights features for AlloyDB(为 AlloyDB 启用高级查询数据分析功能)> Active Query Analysis(活跃查询分析)。

  6. 点击保存更改

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

您可以使用 Gemini in Databases 协助功能来帮助您监控 AlloyDB for PostgreSQL 资源并排查问题。如需了解详情,请参阅在 Gemini 的协助下进行监控和问题排查

查看活跃查询

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

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

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

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

    前往 AlloyDB

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

  5. 选择 Query Insights 标签页。 查询数据分析信息中心会显示所选集群的详细信息。

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

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

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

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

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

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

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

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

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

终止查询或事务

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

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

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

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

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

后续步骤