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