乐趣区

mysql锁(Innodb)

锁的隔离级别

事务隔离级别
脏读
不可重复读
幻读

读未提交(read-uncommitted)


读已提交(read-committed)


可重复读(repeatable-read)


串行化(serializable))


锁的分类
粒度划分

行锁:Record Lock、Gap Lock、Next-Key Lock
表锁
页面锁

级别划分

读锁(Share Locks,S 锁)
写锁(Exclusive Locks,简称 X 锁)
意向读锁(IS):事务打算给数据行加行共享锁,事务在给一个数据行加共享锁前必须先取得该表的 IS 锁
意向写锁(IX):事务打算给数据行加行排他锁,事务在给一个数据行加排他锁前必须先取得该表的 IX 锁

是否兼容
X
IX
S
IS

X
冲突
冲突
冲突
冲突

IX
冲突
兼容
冲突
兼容

S
冲突
冲突
兼容
兼容

IS
冲突
兼容
兼容
兼容

加锁流程

加锁的基本单位是 next-key lock,锁是加在索引上的
查找过程中,访问到的对象才会加锁
索引上的等值查询,给唯一索引加锁的时候,next-key lock 退化为行锁
索引上的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock 退化为间隙锁
唯一索引上的范围查询会访问到不满足条件的第一个值为止。

退出移动版