mysql唯一索引锁范围?

发布于 2022-09-12 12:54:48 字数 620 浏览 44 评论 0

CREATE TABLE `b` (
 `a` int(11) NOT NULL,
 `b` int(11) DEFAULT NULL,
 `c` int(11) DEFAULT NULL,
 PRIMARY KEY (`a`),
 UNIQUE KEY `idx_b` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert(1,1,1);
insert(3,3,3);
insert(5,5,5);
insert(10,10,10);
insert(15,15,15);

session 1:
begin;
select * from b where b >= 10 for update;
commit;
根据唯一索引的等值查询会退化成行锁这一前提,计算以上语句对b索引的加锁范围为[10],(10,15],(15,+], 对主键索引为[10],[15]
session 2:
insert(9,9,9); -- 被阻塞,请问这是为什么呢
当把session 1 的 b>= 10 改成 a >= 10后,session 2就可以正常插入.
a是主键,b也是唯一索引,请问这是什么原因,我遗漏了什么知识点

mysql 8.0.12 , rr隔离级别

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

探春 2022-09-19 12:54:48

是什么隔离级别

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文