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

浙公网安备 33010602011771号