本文主要是介绍MySQL数据库行级锁之间隙锁、临键锁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
间隙锁
默认情况下,InnoDB在 REPEATABLE READ事务隔离级别运行,InnoDB使用 next-key 锁进行搜索和索引扫描,以防止幻读。
- 索引上的等值查询(唯一索引),给不存在的记录加锁时, 优化为间隙锁 。
- 索引上的等值查询(非唯一普通索引),向右遍历时最后一个值不满足查询需求时,next-key lock 退化为间隙锁。
- 索引上的范围查询(唯一索引)–会访问到不满足条件的第一个值为止。
注意:间隙锁唯一目的是防止其他事务插入间隙。间隙锁可以共存,一个事务采用的间隙锁不会阻止另一个事务在同一间隙上采用间隙锁。
演示
数据库的表
索引上的等值查询(唯一索引),给不存在的记录加锁时, 优化为间隙锁
执行更新id为88的数据
查看此时行锁和意向锁的情况:id为60和100之间加入的间隙锁
这篇关于MySQL数据库行级锁之间隙锁、临键锁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!