使用指导

当前版本支持的慢SQL根因如表1所示。

表 1 慢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

复杂的布尔表达式。

主要针对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_query_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
    
意见反馈
编组 3备份
    openGauss 2025-06-07 22:42:34
    取消