表级别锁

表锁

1
2
3
lock table s read
lock table s write
unlock s

元数据锁

主要是对数据库做表更改操作的时候

1
2
- 对表做curd操作的时候加的是MDL读锁
- 对表做结构变更的时候加的是MDL写锁

意向锁

  • 在对某条记录加入独占锁的时候会加入意向独占锁
  • 在对某条记录加入共享锁的时候会加入共享独占锁

意向锁只和共享表锁和独占表锁冲突,主要是判断表里是否有记录被加锁

行锁

  • 记录锁

    • 把一个记录锁上
      • 对于确定的记录加锁
  • 间隙锁 Gap Lock

    • 锁住一个范围,但是不包括记录本身
    • 主要是防止幻读的插入产生
  • next-key 锁定一个范围和记录本身 临界锁

  • 原则1:加锁的基本单位是next-key lock。希望你还记得,next-key lock是前开后闭区间。

  • 原则2:查找过程中访问到的对象才会加锁

  • 优化1:索引上的等值查询,给唯一索引加锁的时候,next-key lock退化为行锁。、

  • 优化2:索引上的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock退化为间隙锁。