绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
数据库有问必答 | 如何定位PolarDB出现死锁的原因?
2022-01-12 16:04:04

Q: 如何定位PolarDB出现死锁的原因?

你可以利用DAS的锁分析功能与SQL洞察功能进行死锁定位,详细操作方法和注意事项如下:

  • 背景信息

    死锁是关系型数据库系统中为常见的错误,出现在不同事务中同时对某些数据访问加锁时,都要等待对方请求中的数据而无法获取锁。数据库系统会自动牺牲回滚代价小的事务,从而导致对应的写请求失败。更严重的情况是在大量死锁发生时,会导致数据库系统效率低下,大量进程堆积进而引发性能问题。正常情况下,死锁都是由于逻辑加锁的顺序导致的,也就是我们常说的ABA死锁。

  • 死锁定位

    登录PolarDB控制台,在诊断与优化>一键诊断中选择锁分析,单击立即诊断。如果集群存在死锁,会在发现死锁列出现”是”。目前诊断功能只能拉取后一次死锁,同样是从innodb status中获取的。如果集群不重启,死锁信息会一直保留后一组日志,所以需要确认诊断后的日志是不是存量死锁问题,也就是说发现的死锁不一定是新出现的死锁。发现死锁后,单击查看详情,会显示格式化后的死锁信息。

  • 事物流定位

    事务流定位的前提条件是在死锁发生前,PolarDB控制台已经开启了SQL洞察功能,才能对执行过的语句进行定位。通过死锁定位,可以获取到回滚的事务、发生死锁的语句、thread_id。

注:本文所说的死锁是指deadlock,而非事务锁造成的阻塞(block)。

来源:https://mp.weixin.qq.com/s/ICMVbKM2IW_ioLbb7XVeDg

分享好友

分享这个小栈给你的朋友们,一起进步吧。

PolarDB
创建时间:2021-12-14 14:16:16
PolarDB
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
  • ittttliu
    专家
戳我,来吐槽~