第二十三讲 封锁的粒度
封锁粒度
封锁对象的大小称为封锁粒度(Granularity)
封锁的对象:逻辑单元,物理单元
例:在关系数据库中,封锁对象:
逻辑单元: 属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等
物理单元:页(数据页或索引页)、物理记录等
选择封锁粒度的元组
封锁粒度与系统的并发度和并发控制的开销密切相关
封锁的粒度越大,数据库所能够封锁的数据单元就越来越少,并发度就越小,系统开销也越小。
封锁的粒度越小,并发度越高,但是系统开销也就越大。
封锁粒度越小,并发度越高。
例
若封锁粒度是数据页,事务T1需要修改元组L1,则T1必须对包含L1的整个数据页A加锁。如果T1对A加锁后事务T2要修改A中元组L2,则T2被迫等待,直到T1释放A。
如果封锁粒度是元组,则T1和T2可以同时对L1和L2加锁,不需要互相等待,提高了系统的并行度。
又如,事务T需要读取整个表,若封锁粒度是元组,T必须对表中的每一个元组加锁,开销极大
如果说封锁粒度是关系,T3只需要一次加锁
封锁粒度越小,封锁开销越大
多粒度封锁(Multiple Granularity Locking)
在一个系统中同时支持多种封锁粒度供不同的事务选择
选择封锁粒度
同时考虑封锁开销和并发度两个因素,适当选择封锁粒度
需要处理多个关系的大量元组的用户事务:以数据库为封锁单位
需要处理大量元组的用户事务:以关系为封锁单元
只处理少量元组的用户事务:以元组为封锁单位
11.7.1 多粒度封锁
多粒度树
以树形结构来表示多级封锁粒度
根结点是整个数据
本文详细介绍了封锁粒度的概念,封锁对象包括逻辑和物理单元,如元组、关系、页等。封锁粒度的选择直接影响并发度和系统开销。封锁粒度越大,并发度越小,开销越小;反之,粒度越小,并发度越高,开销越大。多粒度封锁允许事务选择不同封锁粒度,通过意向锁(IS、IX、SIX)提高加锁检查效率,减少开销。这种机制在实际数据库管理系统中广泛应用。
订阅专栏 解锁全文
184

被折叠的 条评论
为什么被折叠?



