VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

Slow Query Diagnosis: 慢SQL根因分析

功能描述

慢SQL一直是数据运维中的痛点问题,如何有效诊断慢SQL根因是当前一大难题,gs_dbmind工具结合Vastbase自身特点融合了现网DBA慢SQL诊断经验,支持慢SQL根因分析,能同时按照可能性大小输出多个根因并提供针对性的建议。

语法格式

gs_dbmind component slow_query_diagnosis --help

显示如下帮助信息:

usage:  [-h] -c DIRECTORY [--query SLOW_QUERY]
        [--start-time TIMESTAMP_IN_MICROSECONDS]
        [--end-time TIMESTAMP_IN_MICROSECONDS] [--retention-days DAYS]
        {show,clean}

Slow Query Diagnosis: Analyse the root cause of slow query

positional arguments:
  {show,clean}          choose a functionality to perform

optional arguments:
  -h, --help            show this help message and exit
  -c DIRECTORY, --conf DIRECTORY
                        set the directory of configuration files
  --query SLOW_QUERY    set a slow query you want to retrieve
  --start-time TIMESTAMP_IN_MICROSECONDS
                        set the start time of a slow SQL diagnosis result to
                        be retrieved
  --end-time TIMESTAMP_IN_MICROSECONDS
                        set the end time of a slow SQL diagnosis result to be
                        retrieved
  --retention-days DAYS
                        clear historical diagnosis results and set the maximum
                        number of days to retain data

参数说明

参数 参数说明 取值范围
-h, --help 帮助命令。 -
action 动作参数。
  • show:结果展示
  • clean:清理结果
  • diagnosis:交互诊断
  • -c,--conf 配置目录。 -
    --query 慢SQL文本。 *
    --start-time 显示开始时间的时间戳,单位毫秒。或日期时间格式为 %Y-%m-%d %H:%M:%S。 正整数或日期时间格式
    --end-time 显示结束时间的时间戳,单位毫秒。或日期时间格式为 %Y-%m-%d %H:%M:%S。 正整数或日期时间格式
    --retention-days 清理历史诊断结果的天数。 实数(当其小于等于0时,会将结果全部删除)

    注意事项

    • 使用该功能,exporter指标采集系统(即openGauss exporter、reprocessing exporter以及node exporter)必须运行正常,exporter指标采集系统部署请参考Prometheus Exporter组件
    • 已完成confpath目录初始化配置,可参考SERVICE子命令章节中配置初始化目录内容。

    使用示例

    假设用户已经初始化配置文件目录confpath,则可以通过下述命令实现本特性的功能:

    • 仅启动慢SQL诊断功能,启动命令如下(更多用法参考对service子命令的说明)。

      gs_dbmind service start -c confpath --only-run slow_query_diagnosis
      
    • 交互式慢SQL诊断。

      gs_dbmind component slow_query_diagnosis diagnosis -c confpath --query SQL --start-time timestamps0 --end-time timestamps1
      

      例如:

      gs_dbmind component slow_query_diagnosis diagnosis -c config  --query "INSERT INTO tb_stat_one_month(metric_name,INSTANCE,AVG,MIN,MAX,the_95_quantile,date) values (?,?,?,?,?,?,?) RETURNING tb_stat_one_month.id" --start-time '2023-03-01 00:00:00' --end-time '2023-03-01 19:00:00'  --database postgres
      

      返回结果如下所示,输出多个根因并提供针对性的建议:

    • 手动清理历史预测结果。

      gs_dbmind component slow_query_diagnosis clean -c confpath --retention-days DAYS
      
    • 停止已启动的服务。

      gs_dbmind service stop -c confpath