MySQL MDL类型和兼容矩阵

 

MySQL MDL类型和兼容矩阵

 

MDL类型:传送门1 传送门2

锁名称 锁类型 说明 适用语句
MDL_INTENTION_EXCLUSIVE(IX) 共享锁 意向锁,锁住一个范围

任何语句都会获取MDL意向锁,

然后再获取更强级别的MDL锁。

MDL_SHARED(S) 共享锁,表示只访问表结构  
MDL_SHARED_HIGH_PRIO(SH) 共享锁,只访问表结构

show create table 等

只访问INFORMATION_SCHEMA的语句
MDL_SHARED_READ(SR) 访问表结构并且读表数据

select语句LOCK TABLE ...  READ

MDL_SHARED_WRITE(SW) 访问表结构并且写表数据

SELECT ... FOR UPDATE

DML语句
MDL_SHARED_WRITE_LOW_PRIO(SWLP)    
MDL_SHARED_UPGRADABLE(SU) 可升级锁,访问表结构并且读写表数据 Alter语句中间过程会使用
MDL_SHARED_READ_ONLY(SRO)    
MDL_SHARED_NO_WRITE(SNW) 可升级锁,访问表结构并且读写表数据,并且禁止其它事务写 Alter语句中间过程会使用
MDL_SHARED_NO_READ_WRITE(SNRW) 可升级锁,访问表结构并且读写表数据,并且禁止其它事务读写 LOCK TABLES ... WRITE
MDL_EXCLUSIVE(X) 写锁 禁止其它事务读写 CREATE/DROP/RENAME TABLE等DDL语句。

 

其中,引用https://dev.mysql.com/doc/refman/8.0/en/performance-schema-metadata-locks-table.html的一段内容:

LOCK_TYPE:The lock type from the metadata lock subsystem. The value is one of INTENTION_EXCLUSIVESHAREDSHARED_HIGH_PRIOSHARED_READSHARED_WRITESHARED_UPGRADABLESHARED_NO_WRITESHARED_NO_READ_WRITE, or EXCLUSIVE.

lock_type官网给的类型刚好对应了上述表格中除了SWLP和SRO之外的其他类型。

 

MDL的兼容性矩阵(对象维度):

 Request  |        Granted requests for lock            |
  type    | S  SH  SR  SW  SWLP  SU  SRO  SNW  SNRW  X  |
----------+---------------------------------------------+
S         | +   +   +   +    +    +   +    +    +    -  |
SH        | +   +   +   +    +    +   +    +    +    -  |
SR        | +   +   +   +    +    +   +    +    -    -  |
SW        | +   +   +   +    +    +   -    -    -    -  |
SWLP      | +   +   +   +    +    +   -    -    -    -  |
SU        | +   +   +   +    +    -   +    -    -    -  |
SRO       | +   +   +   -    -    +   +    +    -    -  |
SNW       | +   +   +   -    -    -   +    -    -    -  |
SNRW      | +   +   -   -    -    -   -    -    -    -  |
X         | -   -   -   -    -    -   -    -    -    -  |

说明:横向表示其它事务已经持有的锁,纵向表示事务想加的锁

 

范围锁的兼容性矩阵:

          | Type of active   |
  Request |   scoped lock    |
   type   | IS(*)  IX   S  X |
 ---------+------------------+
 IS       |  +      +   +  + |
 IX       |  +      +   -  - |
 S        |  +      -   +  - |
 X        |  +      -   -  - |

 

posted @ 2023-04-10 17:19  PiscesCanon  阅读(158)  评论(0编辑  收藏  举报