MySQL事务死锁问题排查 | 京东云技术团队

💡 原文中文,约7500字,阅读约需18分钟。
📝

内容提要

本文介绍了Innodb引擎中锁机制下select … for update和insert操作可能导致死锁问题,提出了解决方案,包括使用CAS+分布式锁和调整事务隔离级别为RC等。文章列出了相关参考文献。

🎯

关键要点

  • 在预发环境中,MySQL发生死锁,导致写库存失败。
  • 死锁发生在两个事务同时进行写库存操作时。
  • 事务的伪代码描述了查询和插入/更新的逻辑。
  • Innodb引擎中有行级锁、间隙锁和临键锁等锁机制。
  • 共享锁和排他锁的兼容性影响事务的执行。
  • 在RR隔离级别下,加锁的过程会影响事务的执行顺序。
  • 意向锁用于表明事务将要对某张表某行数据操作。
  • 插入意向锁是一种特殊的意向锁,用于处理插入操作。
  • 两个事务在执行相同操作时可能导致死锁。
  • 解决方案包括使用CAS+分布式锁和调整事务隔离级别为RC。
➡️

继续阅读