/images/avatar.png

MySQL-锁的学习

SQL标准规定不同隔离级别

READ UNCOMMITTED :脏读、不可重复读、幻读都可能发生。 READ COMMITTED:隔离级别下,不可重复读、幻读可能发生,脏读不可以发生。 REPEATABLE READ:隔离级别下,幻读可能发生,脏读和不可重复读不可以发生。 SERIALIZABLE:隔离级别下,上述问题都不可以发生。 MySQL在REPEATABLE READ隔离级别实际上就已经解决了幻读问题。

MySQL-锁-间隙锁案例篇

间隙加锁规则

  1. 原则1:加锁的基本单位是next-key lock。希望你还记得,next-key lock是前开后闭区间。
  2. 原则2:查找过程中访问到的对象才会加锁。
  3. 优化1:索引上的等值查询,给唯一索引加锁的时候,next-key lock退化为行锁。
  4. 优化2:索引上的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock退化为间隙锁。
  5. 一个bug:唯一索引上的范围查询会访问到不满足条件的第一个值为止。