DWS中sql性能差的问题定位方法

网友投稿 614 2022-05-29

A. 背景:客户在使用DWS时,经常会出现执行一个sql很久不返回结果,导致业务性能低下,从而报障。

现象:一个业务sql执行很久不出结果

定位方法:DWS在经常变化的表需要定期做统计优化查询,具体场景如下:

1 经常变化的表,如果经常insert语句到表中,需要做analyze 表,具体语句为

Analyze tablename;

2 经常变化的表,如果经常删除delete数据,需要做valcumm full 表,具体语句为

Valcumm full tablename

注:执行valcumm full 语句时注意不能有其他任务在跑。

注:定位技巧:查询表大小

select * from pg_size_pretty(pg_table_size('tablename'));

判断方法:如果表非常大,而实际只有很少数据,和真实大小对应不上,那么应该进行valcumm full 表进行磁盘碎片整理。

B. 背景:客户在使用DWS时,会出现各种原因sql阻塞被锁,导致业务sql一直卡主执行时间长。

定位方法:pg_stat_activity表记录了后台正在运行的sql相关信息

具体相关定位方法如下:

1 查询后台活跃sql

SELECT pid,datname, usename, state,waiting, query FROM pgxc_stat_activity WHERE  state <> 'idle';

2 查询后台业务有锁的sql

SELECT pid,datname, usename, state,waiting, query FROM pgxc_stat_activity WHERE  state <> 'idle' and waiting=true;

3 判断方法如下

DWS中sql性能差的问题定位方法

a 如果没有锁,那么查找相关业务sql,按照上面A的判断方法进行处理。

b 如果有锁,那么查找出pid字段,使用如下函数,结束任务,释放锁

SELECT pg_terminate_backend(pid);

数据仓库服务 GaussDB(DWS) SQL

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Spark数据分析:基于Python语言 》 —1.2 Spark简介
下一篇:Linux之whereis命令
相关文章