锁的一点问题

来源:3-17 锁模块之RR如何避免幻读

大昶子

2019-07-22

老师好,我又来了(捂脸)innodb中对于不走索引的当前读,是使用表锁还是Gap锁(也是锁表)?前面讲到了“只有通过索引条件检索数据时,innodb才使用行锁或gap锁,否则使用表锁”,后面又说不走索引的当前读用的gap锁,似乎有点矛盾啊,虽然效果都是锁表。

写回答

3回答

Whizwolf_mao

2019-08-28

不走索引不仅用了gap锁,还把所有的记录都加了记录锁,造成的结果就是锁表,体现出的就是“表锁”,我是这样理解的

0
0

慕雪6307026

2019-07-23

完全不走索引的情况,可以理解为它的Gap范围在(-∞, 表中最小的值], (表中最小的值, 表中最大值], (表中最大值, +∞), 其实就相当于锁表了。

0
0

翔仔

2019-07-23

同学好,后面说的不走索引可能引起误解,不走索引的情况精确来讲,指的是where没有命中已有的索引(比如列a设置为索引,而a里没有值1,而检索的时候使用where a = 1)或者where里面有范围查询的,innodb也是有表锁的,完全不走索引的情况下用的是表锁

0
2
翔仔
回复
Whizwolf_mao
同学好,是这个意思,但是想更精确表述出来,确实就是不走索引会用表锁:)
2019-08-29
共2条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程