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 | 动作参数。 | |
-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