MySQL InnoDB锁
Posted 如幻行云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL InnoDB锁相关的知识,希望对你有一定的参考价值。
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锁
以上是关于MySQL InnoDB锁的主要内容,如果未能解决你的问题,请参考以下文章