共计 511 个字符,预计需要花费 2 分钟才能阅读完成。
锁的隔离级别
事务隔离级别
脏读
不可重复读
幻读
读未提交(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 退化为间隙锁
唯一索引上的范围查询会访问到不满足条件的第一个值为止。
正文完