2019-07-28第21讲:间隙锁

疑问一:  分析mysql, DML语句的锁时, 因为如何思考呢?  顺序是表锁==> 行锁吗? 那间隙锁呢? 

还有意向锁也是表级锁,  还有什么表锁呢? 

总则: 


加锁规则:2原则 2优化 1bug

#2 非唯一索引等值锁 ==> 如果要给行加读锁避免更新, 要绕过覆盖索引的优化.既让执行计划回表

#3 主键索引范围锁: ==> 等值查询使用行锁, 范围查询使用间隙锁 ==> next-key lock ; 等值查询会退化成行锁; 范围查询会退化间隙锁;

#4 非唯一索引范围锁 : ==> 等值查询==>加锁的时候, 以开区间的方式从前往后找,找到了,就是闭区间. 主键会退化成行锁; 非主键不会.

#6 非唯一索引上存在"等值"的例子 ==> select ; update ; insert ; delete ; 的加锁逻辑基本一致

#7 limit 语句加锁 ==> 在满足limit的前提下, 会绕过优化2==> 即找到满足limit的条数后, 不会再往右查找到不满足的条件

#8 一个死锁的例子 next-key lock ==> 具体执行,是先加间隙锁, 在加行锁的.

你可能感兴趣的:(2019-07-28第21讲:间隙锁)