DWS中sql性能差的问题定位方法
【摘要】 SQL性能差,优化方法
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 判断方法如下
a 如果没有锁,那么查找相关业务sql,按照上面A的判断方法进行处理。
b 如果有锁,那么查找出pid字段,使用如下函数,结束任务,释放锁
SELECT pg_terminate_backend(pid);
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)