锁的一点问题
来源:3-17 锁模块之RR如何避免幻读
大昶子
2019-07-22
老师好,我又来了(捂脸)innodb中对于不走索引的当前读,是使用表锁还是Gap锁(也是锁表)?前面讲到了“只有通过索引条件检索数据时,innodb才使用行锁或gap锁,否则使用表锁”,后面又说不走索引的当前读用的gap锁,似乎有点矛盾啊,虽然效果都是锁表。
写回答
3回答
-
Whizwolf_mao
2019-08-28
不走索引不仅用了gap锁,还把所有的记录都加了记录锁,造成的结果就是锁表,体现出的就是“表锁”,我是这样理解的
00 -
慕雪6307026
2019-07-23
完全不走索引的情况,可以理解为它的Gap范围在(-∞, 表中最小的值], (表中最小的值, 表中最大值], (表中最大值, +∞), 其实就相当于锁表了。
00 -
翔仔
2019-07-23
同学好,后面说的不走索引可能引起误解,不走索引的情况精确来讲,指的是where没有命中已有的索引(比如列a设置为索引,而a里没有值1,而检索的时候使用where a = 1)或者where里面有范围查询的,innodb也是有表锁的,完全不走索引的情况下用的是表锁
022019-08-29
相似问题