刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
间隙锁为了解决RR(可重复读)级别下当前读导致的幻读问题,锁的对象是索引叶子节点的next指针。
在RR隔离级别下:快照读有可能读到数据的历史版本,也有可能读到数据的当前版本。所以快照读无需用锁也不会发生幻读的情况。
数据库 X
a 主键 | b 索引 | c 字段 |
---|---|---|
1 | 2 | A |
3 | 6 | B |
5 | 4 | C |
7 | 10 | D |
9 | 8 | E |
间隙锁范围
select c from X where a=4 for update;
会锁住主键索引叶子节点的3的next指针。
select c from X where a=3 for update;
间隙锁会退化为行锁只锁叶子节点3 ,为什么因为没必要。
select c from X where a>4 for update;
叶子节点3及之后所有节点会加行锁并且他们的next指针会加锁,
select a from X where c=2 for update;
会发生锁表,因为c没有索引结构能存储行锁或者间隙锁。
本文链接:说说什么是间隙锁
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!