表级别锁
表锁
1 | lock table s read |
元数据锁
主要是对数据库做表更改操作的时候
1 | - 对表做curd操作的时候加的是MDL读锁 |
意向锁
- 在对某条记录加入独占锁的时候会加入意向独占锁
- 在对某条记录加入共享锁的时候会加入共享独占锁
意向锁只和共享表锁和独占表锁冲突,主要是判断表里是否有记录被加锁
行锁
记录锁
- 把一个记录锁上
- 对于确定的记录加锁
- 把一个记录锁上
间隙锁 Gap Lock
- 锁住一个范围,但是不包括记录本身
- 主要是防止幻读的插入产生
- 在
next-key 锁定一个范围和记录本身 临界锁
原则1:加锁的基本单位是next-key lock。希望你还记得,next-key lock是前开后闭区间。
原则2:查找过程中访问到的对象才会加锁
优化1:索引上的等值查询,给唯一索引加锁的时候,next-key lock退化为行锁。、
优化2:索引上的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock退化为间隙锁。