MYSQL删除不存在的数据造成死锁.docxVIP

  • 11
  • 0
  • 约1.62千字
  • 约 4页
  • 2023-08-01 发布于北京
  • 举报
删除不存在的数据造成死锁 第34章介绍了如何查看死锁日志,但案例中死锁的场景还是很简单的,属于教科书版本的死锁。本章将通过一个案例来加深读者对RR隔离级别下加锁规则的理解,阅读死锁日志,能够将理论知识运用到实际中。 问题现象 不管是开发人员还是DBA,一定都听说过不建议使用RR(REPEATABLE-READ)隔离级别这个规范。如果你是开发人员,问DBA为何这样做?可能得到的答案是:容易产生死锁,或者容易产生锁等待。在MySQL中RR隔离级别下的GAP锁确实是一个很容 易“踩坑”的地方,如果不了解GAP锁的机制,就很容易造成锁等待或者死锁,本章我们就来分析一个删除不存在的数据造成死锁的案例,通过这个案例让大家更深入地了解在RR 隔离级别下为何会容易造成锁等待或者死锁。 大家可能很难理解删除不存在的数据是如何造成死锁的,下面我们一起来分析,先看一下复现后的死锁日志: 问题分析 在第34章中我们已经会了如何查看死锁日志,从这个死锁日志中可以看出,事务27685在执行INSERT语句申请插入意向锁时发生了锁等待,插入的语句是“INSERT INTO t1 VALUES (2)”。事务27686在主键值为5的这条记录上持有GAP锁,GAP锁的范围应是(x,5),x代表未知。因为如果在主键值为5的这条记录之前还有其他记录,则GAP锁的范围为从x到5,“lock_mode X locks ga

文档评论(0)

1亿VIP精品文档

相关文档