数据库死锁,Lock wait timeout exceeded; try restarting transaction,前端pending等问题排查

  1. INNODB_LOCKS, INNODB_LOCK_WAITS, INNODB_TRX三个表是MYSQL中事务和锁相关的表,遇到死锁或者等待锁超时的问题时,可以从这三个表中找的问题,三个表的表结构可以从下面这篇博客中详细查看。https://blog.csdn.net/yuyinghua0302/article/details/82318408
  2. INNODB_TRX表中可以查到正在执行的事务
    1. TRX_QUERY字段会显示执行的sql,通过sql能看出是那一张表事务有问题,找的对应数据。
    2. TRX_REQUESTED_LOCK_ID事务当前正在等待的锁的ID,如果TRX_STATELOCK WAIT; 否则NULL
      1. 如果这里是null,表明就是这个sql的问题,开始优化sql吧。
      2. 如果不是null,拿着这个TRX_REQUESTED_LOCK_IDINNODB_LOCKS进一步查询。
  3. INNODB_LOCKS中进一步查询
    1. LOCK_ID和上文中说的的TRX_REQUESTED_LOCK_ID是一致的,找到对应的数据,然后通过这条数据的LOCK_TRX_ID
    2. 拿着这个LOCK_TRX_ID再去INNODB_TRX表中按TRX_ID字段查询,然后再按步骤2走,循环往复就能找到对应sql,最好还是要优化sql,索引,数据库配置等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值