MySQL数据库行级锁之间隙锁、临键锁

阅读: 评论:0

MySQL数据库行级锁之间隙锁、临键锁

MySQL数据库行级锁之间隙锁、临键锁

间隙锁

默认情况下,InnoDB在 REPEATABLE READ事务隔离级别运行,InnoDB使用 next-key 锁进行搜索和索引扫描,以防止幻读。

  • 索引上的等值查询(唯一索引),给不存在的记录加锁时, 优化为间隙锁 。
  • 索引上的等值查询(非唯一普通索引),向右遍历时最后一个值不满足查询需求时,next-key lock 退化为间隙锁。
  • 索引上的范围查询(唯一索引)–会访问到不满足条件的第一个值为止。

注意:间隙锁唯一目的是防止其他事务插入间隙。间隙锁可以共存,一个事务采用的间隙锁不会阻止另一个事务在同一间隙上采用间隙锁。

演示

数据库的表

索引上的等值查询(唯一索引),给不存在的记录加锁时, 优化为间隙锁

执行更新id为88的数据

查看此时行锁和意向锁的情况:id为60和100之间加入的间隙锁

本文发布于:2024-01-29 00:21:43,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170645890611367.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:间隙   数据库   MySQL   临键锁   行级锁
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23