数据库原理 封锁的粒度
1、封锁粒度是什么? 封锁对象的大小称为封锁的粒度 封锁对象:逻辑单元、物理单元 2、选择封锁粒度的原则? 封锁粒度 和 系统的并发度 、 系统的开销 密切相关 封锁的粒度越大 数据库能够封锁的数据单元就越少,并发度就越小,系统开销也就越小 封锁的粒度越小 数据库能够封锁的数据单元就越多,并发度就越高,系统开销也就越大 因此封锁粒度是一把双刃剑,所以在一个系统当中如果能够提供多种封锁粒度以便不同的事务按照自己的需求选择就比较完美了 这就是所谓的:多粒度封锁 3、具体如何选择封锁粒度呢? 需要处理大量元组的用户事务,以关系为封锁单元 需要处理多个关系的大量元组的用户事务,以数据库为封锁单元 只是处理少量元组的用户事务,以元组为封锁单元 4、多粒度封锁 以树形结构来表示多级封锁粒度 根节点是整个数据库,表示最大的数据粒度 叶节点是最小的数据粒度 三级粒度树 四级粒度树 5、多粒度封锁协议 允许粒度树中的每一个节点独立的被加锁 对一个节点加锁,意味着这个节点的所有后裔节点也同样被加上相同类型的锁 因此多粒度封锁中一个数据对象可能以两种方式封锁: 显式封锁、隐式封锁 6、显式封锁和隐式封锁 显式封锁: 直接加到数据对象上的封锁 隐式封锁:是该数据对象没有独立加锁,是由于其 上级结点加锁而使该数据对象加上了锁 显式封锁和隐式封锁的效果是一样的 显然这种封锁的效率很低,因此引入了一种新型封锁