https://www.51cto.com/article/779551.html
在本文中,我们讨论了间隙锁的加锁规则。间隙锁是MySQL中用于保护范围查询和防止并发问题的重要机制,了解间隙锁的加锁规则对于优化数据库性能、减少数据冲突以及提高并发性能非常重要。
MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,确保查询结果的一致性和并发安全性。
记录锁也被称为行锁,顾名思义,它是针对数据库中的行记录进行的锁定。
比如:
上面的SQL会在 id=1 的行记录上加上记录锁,以阻止其他事务插入,更新,删除这一行。
间隙锁就是对间隙加锁,用于锁定索引范围之间的间隙,以避免其他事务在这个范围内插入新的数据。间隙锁是排它锁,阻止了其他事务在间隙中插入满足条件的值,间隙锁仅在可重复读隔离级别下才有效。
关于间隙锁的详细讲解放在下文,这里只是先做个概念上的介绍。
临键锁由记录锁和间隙锁组合而成,它在索引范围内的记录上加上记录锁,并在索引范围之间的间隙上加上间隙锁。这样可以避免幻读(Phantom Read)的问题,确保事务的隔离性。
切记:间隙锁的区间是左开右开的,临键锁的区间是左开右闭的。
间隙锁是保证临键锁正常运作的基础,理解间隙锁的概念对于深入理解这三种锁非常重要。
间隙锁的锁定范围是指在索引范围之间的间隙
举个简单例子来说明: