专栏名称: 顶尖架构师栈
分享业务架构、技术架构、系统设计方案,以及微服务架构源码,提供业务场景答疑
今天看啥  ›  专栏  ›  顶尖架构师栈

服了!哥们,又双叒叕写了个死锁!

顶尖架构师栈  · 公众号  ·  · 2024-07-24 08:00

文章预览

1 问题背景 2 MySQL 锁回顾 3 DELETE 流程 4 原因剖析 5 现场还原 6 问题思考 6.1 可以通过 SELECT FOR UPDATE 避免吗 6.2 只有唯一索引会有这个问题吗 6.3 持有记录锁后再请求临键锁为什么需要等待 6.4 高版本的 MySQL 会存在 DELETE 死锁吗 7 事后总结 8 参考 1 问题背景 “哥们,又双叒叕写了个死锁,秀啊!😏” 就算是经常写死锁的同学看到估计都会有点懵,两条一模一样的 DELETE 语句怎么会产生死锁呢? 2 MySQL 锁回顾 看到这里的靓仔肯定对 MySQL 的锁非常了解,哥们还是带大家对锁的分类进行快速回顾; 本文将基于 MySQL 5.7.21 版本进行讨论,该版本使用 InnoDB 存储引擎,并采用 Repeated Read 作为事务隔离级别。 要查看 MySQL 的加锁信息,必须启用 InnoDB 状态监控功能; SET   GLOBAL  innodb_status_output= ON ; SET   GLOBAL  innodb_status_output_locks= ON ; 要获取 InnoDB 存储引擎 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览