采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好,我又来了(捂脸)innodb中对于不走索引的当前读,是使用表锁还是Gap锁(也是锁表)?前面讲到了“只有通过索引条件检索数据时,innodb才使用行锁或gap锁,否则使用表锁”,后面又说不走索引的当前读用的gap锁,似乎有点矛盾啊,虽然效果都是锁表。
不走索引不仅用了gap锁,还把所有的记录都加了记录锁,造成的结果就是锁表,体现出的就是“表锁”,我是这样理解的
完全不走索引的情况,可以理解为它的Gap范围在(-∞, 表中最小的值], (表中最小的值, 表中最大值], (表中最大值, +∞), 其实就相当于锁表了。
同学好,后面说的不走索引可能引起误解,不走索引的情况精确来讲,指的是where没有命中已有的索引(比如列a设置为索引,而a里没有值1,而检索的时候使用where a = 1)或者where里面有范围查询的,innodb也是有表锁的,完全不走索引的情况下用的是表锁
看了视频课件,不走索引就是不走索引啊,不是走索引未命中的情况吧(“不走索引的情况精确来讲,指的是where没有命中已有的索引(比如列a设置为索引,而a里没有值1,而检索的时候使用where a = 1)”这是一种走索引未命中的情况),我觉得还是不走索引直接就是锁表了,没那么复杂
同学好,是这个意思,但是想更精确表述出来,确实就是不走索引会用表锁:)
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.7k 27
2.7k 22
1.2k 15
1.4k 14
1.3k 14