MySQL事务死锁问题排查 | 京东云技术团队
💡
原文中文,约7500字,阅读约需18分钟。
📝
内容提要
本文介绍了Innodb引擎中锁机制下select … for update和insert操作可能导致死锁问题,提出了解决方案,包括使用CAS+分布式锁和调整事务隔离级别为RC等。文章列出了相关参考文献。
🎯
关键要点
- 在预发环境中,MySQL发生死锁,导致写库存失败。
- 死锁发生在两个事务同时进行写库存操作时。
- 事务的伪代码描述了查询和插入/更新的逻辑。
- Innodb引擎中有行级锁、间隙锁和临键锁等锁机制。
- 共享锁和排他锁的兼容性影响事务的执行。
- 在RR隔离级别下,加锁的过程会影响事务的执行顺序。
- 意向锁用于表明事务将要对某张表某行数据操作。
- 插入意向锁是一种特殊的意向锁,用于处理插入操作。
- 两个事务在执行相同操作时可能导致死锁。
- 解决方案包括使用CAS+分布式锁和调整事务隔离级别为RC。
➡️