我们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 ?