本文介绍MySQL InnoDB下锁的实现以及优化。
【未完待续】
锁
InnoDB在RR级别下,通过Next Key Lock(Record Lock+Gap Lock)提供了等价于Serializable的能力。Serializable被用在分布式事务上,即对于分布式事务,MySQL要求Serializable隔离级别。
实验
实验修改自文章。
1 | drop table table1; |
Session1,使用for update会强制加行锁(如果存在)或者间隙锁
1 | start transaction; |
Session2
1 | start transaction; |
Session2会被Session1阻塞。如果没有间隙锁,那么只会锁住c1为8的这一行。