技术主题
间隙锁在mysql中经常使用到,今天就聊一聊mysql的间隙锁的内容。
间隙锁是为了解决幻读的问题,并且在当前读的场景下解决的。
当前读包含:update,delete,insert,select…lock in share mode,select…for update
技术原理
一基本概念
1、行锁:给某一行进行加锁
2、间隙锁:两个值之间的间隙,为解决幻读问题,innodb引入的新锁,间隙锁(Gap Lock)
3、间隙锁Gap,左右都是开区间,间隙锁+行锁称next-key锁
二幻读
幻读指的是一个事务在前后两次查询同一个范围的时候,后一次的查询看到了之前一次没有看到的行
三次查询的sql一样,但是结果不一样,称为幻读,后一次的查询中查到了前一次查询没有看到的行
幻读只有在当前读才会出现的现象。
三为什么会出现幻读
即使把所有的行都加上锁,一旦有别的会话插入新的记录,无法阻止幻读的产生,文章来源:https://www.toymoban.com/news/detail-529264.html
1)session A 执行 select … for update 语句&#x文章来源地址https://www.toymoban.com/news/detail-529264.html
到了这里,关于聊一聊mysql中的间隙锁的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!