未使用索引和使用索引未命中,老师能不能统一回答下
来源:3-17 锁模块之RR如何避免幻读
慕粉13951610073
2019-09-17
未使用索引时,加的是行锁(每一行都加锁)?还是行锁(每一行都加锁)和gap锁?还是表锁?
使用索引但未命中时,加的是行锁(每一行都加锁)和gap锁?
老师能回答下吗?我看有其它同学也问了类似的问题。但是写的太多了。没太整明白。
写回答
1回答
-
同学好,innodb的话
不走索引的时候,走的是表锁(插入除外,插入会有插入意向锁,该锁在insert操作时产生。在多事务同时写入不同数据至同一索引间隙的时候,并不需要等待其他事务完成,不会发生锁等待。
假设有一个记录索引包含键值4和7,不同的事务分别插入5和6,每个事务都会产生一个加在4-7之间的插入意向锁,获取在插入行上的排它锁,但是不会被互相锁住,因为数据行并不冲突。)使用索引未命中,就是next-key锁,也就是行锁(每一行都加锁)和gap锁
022019-09-18
相似问题