封锁的粒度
封锁对象的大小称为封锁粒度。
封锁对象可以是逻辑单元,也可以是物理单元,其中,逻辑单元包括:属性值、属性值的集合、元组、关系、索引项、整个索引、整个数据库等,物理单元包括:页(数据页或索引页)、物理记录等。
封锁粒度与系统的并发度和并发控制的开销密切相关。因此,选择封锁粒度要遵循一定的原则:封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度就越小,系统开销也越小;封锁的粒度越小,并发度较高,但系统开销也就越大。
多粒度封锁
在一个系统中同时支持多种封锁粒度供不同的事务选择。
选择封锁粒度需同时考虑封锁开销和并发度两个因素, 适当选择封锁粒度。
例如:需要处理大量元组的用户事务:以关系为封锁单元
需要处理多个关系的大量元组的用户事务:以数据库为封锁单位
只处理少量元组的用户事务:以元组为封锁单位
介绍多粒度封锁之前要先了解多粒度树的概念:
多粒度树:
1.以树形结构来表示多级封锁粒度;
2.根结点是整个数据库,表示最大的数据粒度;
3.叶结点表示最小的数据粒度
如下图为四级粒度树: