间隙锁可以共存,为什么在这种情况下不可以?

我们known

  

间隙锁可以共存。一个事务进行的间隙锁定不会阻止另一事务对相同的间隙进行间隙锁定。共享和专用间隙锁之间没有区别。它们彼此不冲突,并且执行相同的功能。

查看表格:

mysql> create table t1 (id int primary key,val int) ENGINE=InnoDB;
mysql> insert into t1 values (1,2),(2,3),(3,4),(12,13),(18,19);

会议1:

mysql> BEGIN;
mysql> SELECT * FROM t1 WHERE id BETWEEN 4 and 11 FOR UPDATE;  -- GAP lock

会议2:

mysql> BEGIN;
mysql> SELECT * FROM t1 WHERE id BETWEEN 4 and 11 FOR UPDATE;  -- Why block here ?
zhuangting 回答:间隙锁可以共存,为什么在这种情况下不可以?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3136737.html

大家都在问