间隙锁和临键锁(简易版)

197 阅读1分钟

写在前面:间隙锁和临键锁是用来解决幻读的

间隙锁

间隙锁(Gap Locks)是数据库中用于锁定索引范围的一种锁,通俗来讲就是给一个开区间加上锁,防止其他事务在区间内进行数据插入操作。

临键锁

临键锁(Next-Key Lock)是对表中的某一行记录及其相邻的间隙进行加锁

eg

https://cdn.nlark.com/yuque/0/2024/png/28605255/1709090016647-80544d4c-25d8-42ea-bf67-c245454b354e.png#averageHue=%23fbfbfa&clientId=u847c83ed-f65b-4&from=ui&height=339&id=ud57ad695&originHeight=648&originWidth=1152&originalType=binary&ratio=1&rotation=0&showTitle=false&size=13348&status=done&style=none&taskId=u40422c69-1f4a-4a5d-ac3d-883c4f9b2d7&title=&width=603 当执行这个select语句时,会进行如下操作:

  1. 给id=6的数据加上行锁
  2. 在id=6和id=9之间加上临键锁
  3. 在id=9到 +∞加上间隙锁

这些操作就是为了防止在该范围插入幻影数据