原文链接:
https://www.gbase.cn/community/post/3939
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
GBase 8c支持慢SQL诊断,也为开发者预留了一些参数接口。
1、慢SQL相关参数
- track_stmt_stat_level
控制语句执行跟踪的级别。该参数分为两部分,形式为’full sql stat level, slow sql stat level’
full sql stat level为全量SQL跟踪级别,取值范围为OFF、L0、L1、L2。
slow sql stat level为慢SQL的跟踪级别,取值范围为OFF、L0、L1、L2。
若全量SQL跟踪级别值为非OFF时,当前SQL跟踪级别值为全量SQL和慢SQL的较高级别(L2 > L1 > L0)。
- log_min_duration_statement
当某条语句的持续时间大于或者等于特定的毫秒数时,log_min_duration_statement参数用于控制记录每条完成语句的持续时间。
当此选项与log_statement同时使用时,已经被log_statement记录的语句文本不会被重复记录。在没有使用syslog情况下,推荐使用log_line_prefix记录PID或会话ID,方便将当前语句消息连接到最后的持续时间消息。
- instr_unique_sql_count
调大该参数,以免出现“missing SQL statement, GUC instr_unique_sql_count is too small.”的提示。
2、启用慢SQL
gs_guc reload -N all -I all -c "log_min_duration_statement=5s"
gs_guc reload -N all -I all -c "track_stmt_stat_level='OFF,L0'"
gs_guc reload -N all -I all -c "instr_unique_sql_count=2000"
3、慢SQL查询
以下是查用的慢SQL查询语句
select * from dbe_perf.get_global_slow_sql_by_timestamp('2024-01-17 00:00:00', '2024-04-17 23:00:00');
select pid, now(), now() - query_start as query_duration, query from pg_stat_activity where datname = 'cloudx' and pid != pg_backend_pid() and state != 'idle' order by query_duration desc;
产生慢SQL的原因
(1)缺少索引。这种情况下,建议创建索引:
a. join连接条件和where条件的列创建索引。
b. where条件中存在多列判断,可以创建联合索引。
c. 尽量在选择性高的列上创建索引。
d. 在需要排序的列创建索引。
(2)索引失效
a. 联合索引的最左匹配原则失效。
b. select *,查询了不需要的字段。
c. 谓词参与了运算或使用了函数。
d. 谓词中使用like做模糊查询,例如c1 like ‘%aa’。
e. !=、not in、not exists,is not null等。
系统配置
(1)内存相关参数需要优化。
max_process_memory,配合enable_memory_limit使用,限制GBase实例可以使用的最大内存。推荐设置为系统内存的70% ~ 80%。shared_buffers,数据库系统使用的缓存池大小,如果该参数设置得过小,会导致缓存不足,从而产生大量的磁盘I/O。推荐设置为系统内存的25%。work_mem,显式指定内排序和哈希表能使用的内存空间大小,如果该值设得比较小,会向磁盘写入更多的临时文件。
(2)涉及到优化器的相关配置,下面列出一些常用的参数。
- enable_bitmapscan
- enable_mergejoin
- enable_sort
- enable_nestloop
- enable_hashjoin
- enable_seqscan
(3)适当使用Hint。
指定使用nestloop的join方式:
select /*+ nestloop(t2 t1) */
执行并行度:
select /*+ set(query_dop 24) */
原文链接:
https://www.gbase.cn/community/post/3939
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。