更新时间:2025-12-10 GMT+08:00
分享

Doris慢查询语句监控

操作场景

Doris作为一个ROLAP模式的数据库,底层需依赖强大的关系型数据库引擎作为支撑。高并发、聚合查询等是常见的查询场景,但由于MRS Doris不支持慢查询管理,缺少运维监控能力,在实际问题定界过程中无法可视化地获取查询SQL的执行信息。因此需要新增Doris慢查询管理功能来提高Doris的运维监控能力。

该功能仅适用于MRS 3.6.0-LTS及之后版本集群。

前提条件

  • 已创建包含Doris服务的集群,集群内各服务运行正常。
  • 待连接Doris数据库的节点与MRS集群网络互通。
  • 已安装MySQL客户端,相关操作可参考使用MySQL客户端连接Doris

开启Doris慢查询功能

  1. 在MySQL客户端连接Doris后,执行以下命令即可查看Doris正在执行的慢查询语句:

    select * from information_schema.active_queries;

    +-----------------------------------+---------------------+---------------+-------------------+--------------------+-------------------+------------------+----------------+--------------+---------------+----------------+---------+-------+----------------+----------------+---------------+-------+-------------------------------------------------+
    | QUERY_ID                          | QUERY_START_TIME    | QUERY_TIME_MS | WORKLOAD_GROUP_ID | DATABASE           | FRONTEND_INSTANCE | QUEUE_START_TIME | QUEUE_END_TIME | QUERY_STATUS | CONNECTION_ID | QUERY_END_TIME | STATE   | USER  | REMOTE_IP      | QUERY_MEM_USED | PEAK_MEM_USED | TYPE  | SQL                                             |
    +-----------------------------------+---------------------+---------------+-------------------+--------------------+-------------------+------------------+----------------+--------------+---------------+----------------+---------+-------+----------------+----------------+---------------+-------+-------------------------------------------------+
    | e6cc9faaa2634d80-b16920125ae9f368 | 2025-07-28 10:31:13 |             4 |                 1 | information_schema | 192-168-13-178    |                  |                |              |         15140 |                | RUNNING | admin | 192.168.13.178 |              0 |             0 | QUERY | select * from information_schema.active_queries |
    +-----------------------------------+---------------------+---------------+-------------------+--------------------+-------------------+------------------+----------------+--------------+---------------+----------------+---------+-------+----------------+----------------+---------------+-------+-------------------------------------------------+
    1 row in set (0.01 sec)

  2. 如果需要查看已经运行结束的慢查询语句,需开启Doris审计日志表功能。

    1. 登录FusionInsight Manager,选择“集群 > 服务 > Doris > 配置 > 全部配置 > FE(角色) > 日志”,修改“enable_audit_log_table”参数的值为“true”,开启Doris审计日志表功能。

      其中:

      • Doris审计日志表功能开启后,已经执行结束的慢查询语句会保存在“__internal_schema.audit_log”中,默认存储时间为7天。
      • 审计日志表里保存的业务SQL默认长度为4096,可在MySQL客户端连接Doris后执行以下命令查看:

        show variables like "%audit_plugin_max_sql_length%";

        +-----------------------------+-------+---------------+---------+
        | Variable_name               | Value | Default_Value | Changed |
        +-----------------------------+-------+---------------+---------+
        | audit_plugin_max_sql_length | 4096  | 4096          | 0       |
        +-----------------------------+-------+---------------+---------+
        1 row in set (0.00 sec)

        也可执行以下命令根据实际需求修改“audit_plugin_max_sql_length”的值:

        set global audit_plugin_max_sql_length = 1024;

    2. 单击“保存”,单击“确定”保存配置。
    3. 单击“实例”,勾选受影响的FE实例,选择“更多 > 滚动重启实例”,输入当前用户密码并单击“确定”,滚动重启FE实例使配置生效。

  3. 在MySQL客户端连接Doris后,执行以下命令即可查看Doris已执行结束的慢查询语句:

    select * from __internal_schema.audit_log where query_time>3000 and time>='2025-07-27 10:59:32.002' and time<='2025-07-28 10:59:32.002';

    图1 查看已执行结束的慢查询语句

  4. 在FusionInsight Manager界面,选择“集群 > 服务 > Doris > 查询管理”,即可查看正在进行的慢查询已经结束的查询,还可以根据图表查看前Top 10的执行慢查询的用户名、提交慢SQL语句的客户端IP及慢查询语句,其中:

    • Doris集群中Top 10使用的用户:用于统计登录Doris客户端执行慢查询排前TOP 10的Doris用户。
    • Doris集群中Top 10使用的IP地址:用于统计登录Doris客户端执行慢查询排前TOP 10的客户端IP。
    • Doris集群中Top 10使用的查询语句:用于统计在Doris客户端执行慢SQL频率排前TOP 10的慢查询SQL语句。

    图表区域、正在进行的慢查询页签和已经结束的查询页签默认按右上角的慢查询运行时长进行筛选显示,且只显示24小时以内执行的且耗时大于等于3秒的慢查询任务。进入慢查询管理页面后,页面内容需单击右上角的刷新按钮手动刷新,且建议5分钟以上刷新一次即可,不能过于频繁。

正在进行的慢查询

当前还在执行且没有返回结果的慢SQL语句信息可以通过该界面查询。

  • 慢查询菜单路径

    登录FusionInsight Manager,选择“集群 > 服务 > Doris > 查询管理”,单击“正在进行的慢查询”页签,相关参数介绍请参见表2

  • 慢查询过滤条件

    选择对应的过滤条件,输入查询条件值进行过滤查询。

    表1 慢查询界面过滤条件

    条件

    参数说明

    慢查询运行时长大于

    按照慢查询SQL语句查询累计时长过滤查询。

    支持时长大于:3(s)、9(s)、15(s)、25(s)。

    按查询id查询

    根据查询界面对应慢查询语句的“查询id”字段过滤查询。

    支持按照“查询id”的部分值进行模糊查询,例如,查询ID为“111-222-333-444-555”,则输入“111-222”或“-222-333”也能查询到。

    按用户查询

    对应执行慢查询SQL的Doris用户。

    支持按照用户名的部分值进行模糊查询。

    按客户端IP查询

    对应慢查询SQL语句的客户端IP。

    支持按照客户端IP的部分值进行模糊查询,例如,客户端IP为“192.168.0.1”,则输入“192.168”或“192.168.0”也能查询到。

已经结束的查询

已经执行完成并且已返回结果的慢查询SQL语句信息可以通过该界面查询。

界面访问路径:登录FusionInsight Manager,选择“集群 > 服务 > Doris > 查询管理”,单击“已经结束的查询”页签。

界面的参数说明参考表2,过滤条件说明参考表1说明。

慢查询参数说明

表2 慢查询参数说明

参数名称

参数说明

查询id

内部生成的唯一ID。

查询语句

具体慢查询的SQL语句。

开始时间

执行慢查询SQL语句的开始时间。

结束时间

仅在“已经结束的查询”页签显示,表示执行慢查询SQL语句的结束时间。

数据库

当前数据库会话所使用的数据库名称,如果是默认数据库该值为空。

实例名称

仅在“正在进行的慢查询”页签显示,表示执行当前慢SQL查询任务的FE实例节点。

查询时长(s)

表示慢查询SQL语句当前累计执行的时间,单位是秒。

当前内存(byte)

仅在“正在进行的慢查询”页签显示,表示慢查询SQL随着时间变化在当前时间点消耗的内存。

峰值内存(byte)

表示在[慢查询SQL开始时间,当前时间]的时间区间内慢查询SQL消耗的最大内存。

CPU时间(ms)

仅在“已经结束的查询”页签显示,表示在BE上执行的SQL语句累计消耗的CPU毫秒数。

用户

执行慢查询SQL语句的Doris用户。

客户端IP

提交该慢查询SQL语句的客户端IP。

状态

慢查询SQL语句的执行状态,包括:

  • 正在运行:正在运行的慢查询SQL语句。
  • 已取消:在“正在进行的慢查询”页签中单击慢查询SQL语句“操作”列的“终止”,即可结束对应慢查询SQL语句。
  • 已结束:已经正常运行完成的慢查询SQL语句。

操作

仅在“正在进行的慢查询”页签显示,表示当前查询出来的慢SQL语句,可以单击“终止”结束该慢SQL语句查询。

相关文档