南大通用GBase 8c慢SQL查询与优化

原文链接:

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技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值