GaussDB-Slow Query Diagnosis-使用指导

GaussDB-使用指导

慢SQL根因列表

序号

根因

根因解释

补充说明

1

LOCK_CONTENTION

锁竞争

语句执行期间是否被阻塞,导致单SQL执行较慢

2

MANY_DEAD_TUPLES

死元组数量较大

表中死元组占比超过设定阈值会降低查询效率,导致单SQL执行较慢

3

HEAVY_SCAN_OPERATOR

扫描算子代价较大

执行计划中扫描算子代价较大,导致单SQL执行较慢

4

ABNORMAL_PLAN_TIME

异常执行计划生成时间

SQL生成执行计划时间较长

5

UNUSED_AND_REDUNDANT_INDEX

无用/冗余索引

表中存在无用/冗余索引,影响插入更新语句性能

6

UPDATE_LARGE_DATA

更新大量元组

批量更新大量元组,导致单SQL语句性能较差

7

INSERT_LARGE_DATA

插入大量元组

批量插入大量元组,导致单SQL语句性能较差

8

DELETE_LARGE_DATA

删除大量元组

批量删除大量元组,导致单SQL语句性能较差

9

TOO_MANY_INDEX

表中存在太多索引

表中存在大量索引,影响插入更新语句性能

10

DISK_SPILL

磁盘溢出

由于GUC参数设置不当等原因导致SQL执行期间发生落盘现象

13

WORKLOAD_CONTENTION

数据库负载集中

数据库负载集中导致实例整体执行性能较差

14

CPU_RESOURCE_CONTENTION

系统CPU负载集中

由于外部进程等其他原因导致CPU资源紧张,实例整体SQL执行性能较差

15

IO_RESOURCE_CONTENTION

系统IO资源集中

由于外部进程等其他原因导致IO资源紧张,实例整体SQL执行性能较差

16

MEMORY_RESOURCE_CONTENTION

系统内存资源集中

由于外部进程等其他原因导致内存资源紧张,实例整体SQL执行性能较差

17

ABNORMAL_NETWORK_STATUS

异常网络状态

网络异常,导致SQL执行性能较差

18

OS_RESOURCE_CONTENTION

句柄资源紧张

系统句柄资源紧张影响整体执行性能

19

WAIT_EVENT

等待事件

SQL执行期间的等待事件信息

20

LACK_STATISTIC_INFO

统计信息缺失

没有及时更新表统计信息,可能导致执行计划不优进而影响SQL执行性能

21

MISSING_INDEXES

缺少索引

缺失索引导致单SQL执行性能较差

22

POOR_JOIN_PERFORMANCE

join代价较大

JOIN算子代价较大,影响SQL语句执行性能

23

COMPLEX_BOOLEAN_EXPRESSIONS

复杂的bool表达式

主要针对not in (item1, item2, ...)情况,如果元素数量太多可能会导致执行计划较差,从而影响SQL的性能。

24

STRING_MATCHING

字符串匹配

由于不恰当的使用函数等导致索引失效,进而影响SQL性能

25

COMPLEX_EXECUTION_PLAN

复杂的执行计划

执行计划较复杂,执行时间较长

26

CORRELATED_SUBQUERY

关联子查询

有相关子查询导致执行性能较差

27

POOR_AGGREGATION_PERFORMANCE

聚合代价较大

聚合性能较差进而影响SQL执行性能

31

DATABASE_VIEW

系统视图

当前不对系统视图相关的慢SQL进行诊断,统一返回此根因

32

NO_ROOT_CAUSE_FOUND

没有发现根因

没有发现当前慢SQL的根因

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

  • 仅启动慢SQL诊断功能(慢SQL诊断根因数量由算法运行结果决定,数量不固定),启动命令如下(更多用法参考对service子命令的说明):
    gs_dbmind service start -c confpath --only-run slow_sql_diagnosis
     
  • 用户查询慢SQL诊断历史,命令如下:
    gs_dbmind component slow_query_diagnosis show -c confpath --instance instance --query SQL --start-time timestamps0 --end-time timestamps1
     
  • 用户交互式诊断慢SQL,命令如下:
    gs_dbmind component slow_query_diagnosis diagnosis -c confpath --database dbname --schema schema_name --query SQL
     
  • 启用慢SQL诊断后台任务,首先将opengauss_exporter下的pg_sql_statement_history开启,具体步骤如下:
    1、停止opengauss_exporter进程;
    2、进入dbmind/components/opengauss_exporter/yamls/statements.yml中,将该指标的status设置为enable;
    3、重启opengauss_exporter进程;
    4、将slow_query_diagnosis加入到配置文件dbmind.conf下TIMED_TASK的task中,任务之间用逗号隔离,同时该任务运行间隔由配置文件dbmind.conf下TIMED_TASK的slow_query_diagnosis_interval控制,默认120秒,该参数支持用户修改;
    5、运行 gs_dbmind service reload -c confpath 命令,启动慢SQL诊断后台任务;
     
  • 用户手动清理历史预测结果,命令如下:
    gs_dbmind component slow_query_diagnosis clean -c confpath --retention-days DAYS
     
  • 停止已启动的服务,命令如下:
    gs_dbmind service stop -c confpath
     
 
posted @ 2024-11-26 09:45  jerrywang1983  阅读(37)  评论(0)    收藏  举报