题主说的是mysql RR隔离级别的gap锁吧,要看具体insert的数据哦,因为mysql的gap锁是左闭右开的一段区间,并不是会锁住所有的insert操作。
例如:
mysql RR隔离级别下
session1:
CREATE TABLE `test100` (
`id` int(11) NOT NULL,
`id1` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_id1` (`id1`)
) ENGINE=InnoDB
insert into test.test100 values(1,1,'a'),(2,5,'a'),(3,10,'a'),(4,15,'b');
begin;
select * from test100 where id1 =10 for update;
session2:
insert into test.test100 values(7,4,'e'); //正常执行
insert into test.test100 values(8,5,'e'); //锁住
insert into test.test100 values(8,8,'e'); //锁住
insert into test.test100 values(8,10,'e'); //锁住
insert into test.test100 values(8,14,'e'); //锁住
insert into test.test100 values(8,15,'e'); //正常执行