InnoDB的行锁(Record Locks、Gap Locks、Next-Key Locks)

Record Locks

记录锁,当sql执行是通过索引精准查询来检索数据时,精准锁定索引记录。

InnoDB的行锁(Record Locks、Gap Locks、Next-Key Locks)

Gap Locks

间隙锁,当sql执行是通过索引来检索数据,且查询不到数据时,此时sql会加上间隙锁。锁住左开右闭的区间。比如下面例子中锁住区间(3,6]。

InnoDB的行锁(Record Locks、Gap Locks、Next-Key Locks)

Next-Key Locks

临键锁,InnoDB默认的行锁算法。当sql执行是通过索引的范围查询来检索数据,且能查到数据时,此时sql会加上临键锁。

临键锁会锁住满足条件的区间,区间左开右闭。

如下所示,id为索引,将区间划分为(-∞,1],(1,2],(2,3],(3,6],(6,+∞),下图中步骤5会锁住区间(-∞,2]。

InnoDB的行锁(Record Locks、Gap Locks、Next-Key Locks)

 

 

如果有写的不对的地方,请大家多多批评指正,非常感谢!