MySQL 间隙锁可以怎么理解

97次阅读
没有评论

间隙锁可以理解成“锁住两条记录之间的空档”,重点不是锁已有数据,而是阻止别人往这个范围里插入新记录。

它锁的到底是什么

假设索引里已经有 1、5、10 三个值,那么 1 到 5 之间、5 到 10 之间这些还没有数据的位置,就是“间隙”。间隙锁锁住的正是这些空档。

为什么需要间隙锁

它主要用来防止幻读。否则你在事务里按条件查过一次,别人可能马上插入一条刚好命中的新数据,导致你再次查询时结果集突然变了。

它和记录锁有什么区别

记录锁锁的是已经存在的那一行;间隙锁锁的是行与行之间的范围。两者经常一起出现,组合后就形成大家常说的临键锁。

什么时候最容易碰到

在 InnoDB 的可重复读隔离级别下,执行范围查询并配合 for update 或更新语句时,更容易看到间隙锁带来的阻塞现象。

一句话理解

间隙锁不是怕你改旧数据,而是怕你在我当前查询范围里偷偷插入新数据。

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-03-25发表,共计359字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)