MySQL源码学习——MDL字典锁(2)
来源:未知 责任编辑:责任编辑 发表时间:2014-01-06 18:17 点击:次
支持的锁类型
数据库理论中的基本锁类型是S、X,意向锁IS、IX是为了层次上锁而引入的。比如要修改表中的数据,可能先对表上一个表级IX锁,然后再对修改的数据上一个行级X锁,这样就可以保证其他试图修改表定义的事物因为获取不到表级的X锁而等待。
MySQL中将字典锁的类型根据不同语句的功能,进一步细分,细分的依据是对字典的操作和对数据的操作。细分的好处是能在一定程度上提高并发效率,因为如果只定义X和S两种锁,必然导致兼容性矩阵的局限性。MySQL不遗余力的定义了如下的锁类型。
名称 | 意义 |
MDL_INTENTION_EXCLUSIVE |
意向排他锁,只用于范围上锁 |
MDL_SHARED |
共享锁,用于访问字典对象,而不访问数据。 |
MDL_SHARED_HIGH_PRIO |
只访问字典对象(如DESC TABLE) |
MDL_SHARED_READ |
共享读锁,用于读取数据(如select) |
MDL_SHARED_WRITE |
共享写锁,用于修改数据(如update) |
MDL_SHARED_NO_WRITE |
共享非写锁,允许读取数据,阻塞其他TX修改数据(如alter table) |
MDL_SHARED_NO_READ_WRITE |
用于访问字典,读写数据 不允许其他TX读写数据 |
MDL_EXCLUSIVE |
排他锁,可以修改字典和数据 |
相关新闻>>
- 发表评论
-
- 最新评论 进入详细评论页>>