GaussDB(DWS)性能调优:锁等待导致的业务阻塞问题处理建议
【摘要】 常见的锁等待导致业务阻塞问题的解决方案
首先推荐使用《GaussDB(DWS)运维 -- 锁等待监控》中的方式做集群的锁等待信息监控,以方便问题定位分析
更直观的锁等待关系链请使用视图pgxc_lockwait_detail
【场景1】DDL语句(ALTER TABLE语句以及TRUNCATE语句)的锁大量阻塞了其它的查询,建议集群级设置参数ddl_select_concurrent_mode解决此问题
- 参数含义:通过该参数控制DDL语句和SELECT语句并发的模式。该参数仅8.1.3.320、8.2.1及以上集群版本支持。
- 默 认 值:none
- 取值范围:枚举&组合型
none :表示该参数不生效,DDL语句和SELECT语句不能并发,保持锁等待状态。
truncate :表示TRUNCATE语句被SELECT语句阻塞时,TRUNCATE会中断SELECT语句,优先执行,其它DDL语句和SELECT语句保持锁等待状态。
exchange:表示EXCHANGE语句被SELECT语句阻塞时,EXCHANGE会中断SELECT语句,优先执行,其它DDL语句和SELECT语句保持锁等待状态。
也可以写成truncate,exchange,表示TRUNCATE和EXCHANGE语句被SELECT语句阻塞时,二者会中断SELECT语句,优先执行。 - 影响范围:ALTER TABLE语句以及truncate语句操作目标表的查询语句
- 参数建议:设置为‘truncate,exchange’
【场景2】其它语句阻塞了DDL语句,而DDL语句又进一步阻塞了其它语句,建议集群级设置参数ddl_lock_timeout解决此问题
- 参数含义:指定DDL语句申请锁的等待时间
- 默 认 值:为0,即会一直等待,直到锁等待超时(一般为20min)
- 取值范围:整型,0 ~ INT_MAX,单位为毫秒(ms)
- 影响范围:ALTER TABLE语句以及truncate语句
- 参数建议:设置为10000~30000之间,即DDL语句申请锁是的等待时间在10s到30s之间,超时会报错
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)