间隙锁
间隙锁在MySQL中解决了幻读问题,在MySQL中通过RR也能解决幻读。
但是使用间隙锁时有两个坑需要注意一下.
栗子:
Insert into t_lock_1 values(10),(11),(13),(20),(40) // 创建三条数据
Select * from t_lock_1 where a <= 13 for update;// 间隙锁, 锁住小于13的所有数据
insert into t_lock_1 values(0)//插入0 也在锁的范围内
insert int t_lock_1 values(19) //失败,因为间隙锁会锁住比范围内的数再多加一个的数
例子2:
在同时拥有Primary Key 和 Key的情况下,也会把前面的范围锁住,然后往后锁一个数
网友评论