MySQL InnoDB锁

时间:2021-11-08 04:51:00

1. 行级锁:共享锁(S)和排他锁(X)

  共享锁:允许持锁事务读取一行,事务A持有S锁,事务B请求S锁时,会立即被赋予,若请求X锁,需等待释放S锁才可以拿;

  排他锁:允许持锁事务更新或删除一行,事务A持有X锁,事务B请求S、X锁时,需等待释放X锁才可以拿;

 

2. 表级锁:意向锁(I)和自增锁

  意向锁:表明一个事务稍后要获取表中某一行的行级锁,分为意向共享锁(IS)和意向排他锁(IX),事务A要想获取S锁,先必须有IS锁或更高级别的锁,一个事务要想获取X锁,必须先有IX锁;

  自增锁:表明事务插入自增列的时候需要的锁,一个事务正在插入记录,其他事务插入记录需要等待

 

3. 记录锁:锁定索引记录的锁

 

4. 间隙锁(gap):是索引记录间隙上的锁,或者是对第一个或者最后一个索引记录之前的间隙的锁定,对于唯一索引来说,不需要间隙锁,可以被设置关闭

 

5. 插入意向锁:插入一行数据之前的意向锁

  多个事务在相同的索引间隙插入记录时,如果不是插入间隙中相同的位置,就不冲突,无需相互等待

 

可参考:官网InnoDB锁