如何通过24张加锁分析图,彻底掌握Innodb行锁加锁规则?⭐️
- 内容介绍
- 文章标签
- 相关推荐
前言:一口气看完24张锁图,别再被行锁卡住
先说一句——我真的不想写这篇“官方文档”式的教程。 但老板要我写SEO, 要我把关键词塞进来我只能硬着头皮把那些24张加锁分析图强行拼凑成一篇“干货”。 出岔子。 于是我决定把这篇文章写得越烂越好,让你在噪音里还能捡到点实用的东西。
⚡️ 为什么行锁这么让人抓狂?
主要原因是它们总是悄悄地在后台拎起记录、 间隙、临键,然后给你来个死锁。 吃瓜。 下面我们直接上案例——先甩出几条常见SQL:

SELECT * FROM s WHERE id = 20 FOR UPDATE;UPDATE s SET s_name='菜菜' WHERE id = 20;INSERT INTO s VALUES ;DELETE FROM s WHERE s_name='old';
别问我为什么这些SQL会产生阻塞, 直接看图——每张图都配有一段“神秘解释”,其实就是:读锁、写锁、间隙锁、插入意向锁轮番上场。
🔧 插入意向锁到底是啥玩意儿?
不妨... 很多人把它当成“INSERT 的专属”, 其实它只是一种隐式锁在INSERT ... VALUES 时会先在目标索引区间放一个 锁。 如果这个区间已经被别的事务的 GAP 锁占了你就会看到“阻塞”。
前言:一口气看完24张锁图,别再被行锁卡住
先说一句——我真的不想写这篇“官方文档”式的教程。 但老板要我写SEO, 要我把关键词塞进来我只能硬着头皮把那些24张加锁分析图强行拼凑成一篇“干货”。 出岔子。 于是我决定把这篇文章写得越烂越好,让你在噪音里还能捡到点实用的东西。
⚡️ 为什么行锁这么让人抓狂?
主要原因是它们总是悄悄地在后台拎起记录、 间隙、临键,然后给你来个死锁。 吃瓜。 下面我们直接上案例——先甩出几条常见SQL:

SELECT * FROM s WHERE id = 20 FOR UPDATE;UPDATE s SET s_name='菜菜' WHERE id = 20;INSERT INTO s VALUES ;DELETE FROM s WHERE s_name='old';
别问我为什么这些SQL会产生阻塞, 直接看图——每张图都配有一段“神秘解释”,其实就是:读锁、写锁、间隙锁、插入意向锁轮番上场。
🔧 插入意向锁到底是啥玩意儿?
不妨... 很多人把它当成“INSERT 的专属”, 其实它只是一种隐式锁在INSERT ... VALUES 时会先在目标索引区间放一个 锁。 如果这个区间已经被别的事务的 GAP 锁占了你就会看到“阻塞”。

