GaussDB(DWS)性能调优:锁等待导致的业务阻塞问题处理建议

举报
譡里个檔 发表于 2024/09/03 12:36:28 2024/09/03
【摘要】 常见的锁等待导致业务阻塞问题的解决方案

首先推荐使用《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

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

    全部回复

    上滑加载中

    设置昵称

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

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

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