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

举报
行人忆南山 发表于 2020/05/29 18:20:43 2020/05/29
【摘要】 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。