Mysql之七-锁的种类及加锁规则汇总

锁的种类

1.行锁;(InnoDb引擎有)

2.表锁/元数据锁(MDL)

1
lock tables ... read/write

3.全局锁;

  • 全局锁的典型使用场景是,做全库逻辑备份
1
Flush tables with read lock(FTWRL)

加锁规则(5.7版本以前, 8.0系列)

  • 两个原则, 两个优化, 和一个bug;
  • 原则1: 加锁的基本单位是next-key lock, (前开后闭区间)
  • 原则2: 查找过程中访问到的对象才会加锁;
  • 优化1: 索引上的等值查询, 给唯一索引加锁时, next-key lock 退化为行锁;
  • 优化2: 索引上的等值查询, 向右遍历时且最后一个值不满足等值条件的时候, next-key lock退化为间隙锁;
  • bug1: 唯一索引上的范围查询会访问到不满足条件的第一个值为止;

具体分析看mysql实战45讲的21讲

待补充

hyhcoder wechat
扫码关注我的个人订阅号