请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

锁的一点问题

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

正在回答 回答被采纳积分+3

3回答

Whizwolf_mao 2019-08-28 21:15:02

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

0 回复 有任何疑惑可以回复我~
慕雪6307026 2019-07-23 16:49:38

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

0 回复 有任何疑惑可以回复我~
翔仔 2019-07-23 00:36:53

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

0 回复 有任何疑惑可以回复我~
  • 看了视频课件,不走索引就是不走索引啊,不是走索引未命中的情况吧(“不走索引的情况精确来讲,指的是where没有命中已有的索引(比如列a设置为索引,而a里没有值1,而检索的时候使用where a = 1)”这是一种走索引未命中的情况),我觉得还是不走索引直接就是锁表了,没那么复杂
    回复 有任何疑惑可以回复我~ 2019-08-28 21:13:14
  • 翔仔 回复 Whizwolf_mao #2
    同学好,是这个意思,但是想更精确表述出来,确实就是不走索引会用表锁:)
    回复 有任何疑惑可以回复我~ 2019-08-29 00:09:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信