Ch08-MySQL 之 锁

Ch08-MySQL 之 锁

June 29, 2022
MySQL
mysql

1. latch #

是内存结构中的一种轻量级的锁,在 MySQL 数据库中,latch 是用于保护内存中 List Page 完整性的锁结构,latch 可以分为有 mutex、SX rw-lock(spin lock),SX rw-lock 是 MySQL 5.7 的新特性,针对 Page 粒度加的内存锁,有助于提升索引访问效率(针对索引更新的模式)。

2. Lock #

lock

  • Gap Lock(间隙锁)锁住的区间均为开区间,间隙锁之间是兼容的,即两个事务可以同时持有包含共同间隙范围的间隙锁,并不存在互斥关系
  • Next-Key Lock(临键锁)锁住的区间除了 supremum 伪记录‍‍‍‍‍‍‍‍‍‍‍‍‍所在区间是开区间外,其余区间均为左开右闭区间;如果一个事务获取了 X 行的 next-key lock,那么另外一个事务在获取相同范围的 X 行的 next-key lock 时,是会被阻塞的

2.1 锁与事务隔离级别 #

Isolation/Lock Lock Mode + Lock Type Rec Lock Type
Read uncommitted
Read commited LOCK_IX + TABLE_LOCK LOCK_X + ROW_LOCK LOCK_REC_NOT_GAP
Repeatable read LOCK_IX + TABLE_LOCK LOCK_X + ROW_LOCK LOCK_REC_NOT_GAP or LOCK_GAP or LOCK_ORDINARY
Serializable

3. 参考文献 #