唯一索引的部分命中区间问题
来源:3-17 锁模块之RR如何避免幻读
放牧娃子
2019-10-05
我新建一个表 test (id primary key, num unique key)
插入数据
1 10
3 30
5 50
7 70
9 90
事务A
START TRANSACTION;
DELETE FROM TEST WHERE NUM IN (50,45);
事务B
START TRANSACTION;
插入样例
ID = 2,NUM = 20 成功
ID = 2,NUM = 29 成功
ID = 4,NUM = 40 阻塞
ID = 6,NUM = 60 成功
ID = 8,NUM = 80 成功
问题1: 唯一索引部分命中,为什么是 左间隙 (30,50)加GAP锁呢,而不是左右间隙都加呢?
2回答
-
同学好,这个具体需要看底层源码的实现了,至于为什么会这样设计,我觉得应该是设计者遵循开发语言的左闭右开原则吧
052020-03-06 -
qq_不弃_7
2019-11-23
#表数据内容
#id(primary key) name(unique key)
1 10
3 30
5 50
7 70
9 90
事务A
START TRANSACTION;
delete from test1 where name in('50','60');
rollback;
事务B
START TRANSACTION;
INSERT INTO test1 VALUES('2','20');
INSERT INTO test1 VALUES('4','40');
INSERT INTO test1 VALUES('6','60');
INSERT INTO test1 VALUES('8','80');
#以上全部阻塞
ROLLBACK
为什么把整张表给锁了 以上内容全部插入不进
082019-12-18
相似问题