数据库知识之并发控制.ppt

数据库知识之并发控制

注意两段锁协议和防止死锁的一次封锁法的异同之处。 一次封锁法要求每个事物必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议;但两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。如下图所示: T1 T2 Slock B 读 B=2 Xlock A 等待 等待 Slock A 读 B=2 Xlock B 等待 遵守两段协议的 事务发生死锁 11.5.2 两段锁协议的性质 目录 11.1并发控制概述 11.2封锁 11.3活锁与死锁 11.4并发度的可串行性 11.5两段锁协议 11.6封锁的粒度 6.封锁的粒度 6.1封锁粒度 封锁粒度指的是封锁对象的大小。 封锁的单元:逻辑单元、物理单元 例如:在关系数据库中,封锁对象: 逻辑单元:属性值、属性值集合、元组、关系、索引项、整个索引、数据库。 物理单元:页(数据页或索引页)、物理记录等。 封锁粒度与系统的并发度和并发控制的开销密切相关。 例如:若封锁粒度是数据页 数据页 元组L1 元组L3 元组L2 事务T1 事务T2 加锁 例如:若封锁粒度是元组 元组L1 元组3 元组L2 事务T1 事务T2 加锁 加锁 如果在一个系统中同时支持多种封锁粒度供不同的事务选择是比较理想的,这种封锁方法就是多粒度封锁。 选择封锁粒度: 封锁开销和并发度两个因素,并在这两者间进行权衡。 需要大量处理元组的事务可以以关系为封锁粒度 需要处理多个关系的大量元组的事务可以以数据库为封锁粒度 对于一个处理少量元组的用户事务,以元组为封锁粒度 6.2多粒度封锁 多粒度树: 多粒度封锁协议: 允许多粒度树中的每个结点被独立的加锁。 对每个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁。 在多粒度封锁中一个数据对象可能以两种方式封锁,显式加锁和隐式加锁。 多粒度封锁方法中,显式封锁和隐式封锁的效果是一样的,因此系统检查封锁冲突时不仅要检查显式封锁还要检查隐式封锁。 对某个数据对象加锁时系统检查的内容: 该数据对象 数据对象上有无显式封锁与之冲突; 其所有上级结点 看本事务的显式封锁是否与该数据对象上的隐式封锁冲突; 其所有下级结点 看上面的显式封锁是否与本事务的隐式封锁冲突。 6.3意向锁 意向锁是指如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任意结点加锁时,必须先对它的上层结点加意向锁。 具有意向锁的多粒度封锁方法中任意事务T要对一个数据对象加锁,必须先对它的上层结点加意向锁。 申请封锁时应该自上而下的次序进行;释放封锁时则应该按自下而上的次序进行。 具有意向锁的多粒度封锁方法提高了系统的并发度,减少了加锁和解锁的开销,它已经在实际的数据库管理系统产品中得到了广泛应用。 锁的强度是指它对其它锁的排斥程度。 一个事务在申请封锁时以强锁代替弱锁是安全的,反之不然。 锁的强度的偏序关系: T1 T2 S X IS IX SIX - S Y N Y N N Y X N N N N N Y IS Y N Y Y Y Y IX N N Y Y N Y SIX N N Y N N Y - Y Y Y Y Y Y 数据锁的相容矩阵 Thank you ! 并发控制的主要技术就是封锁(Locking)封锁是实现并发控制的一个非常重要的技术。 当多个事物请求封锁同意数据对象时,封锁子系统按照请求封锁的次序对事务派对,数据对象上的锁一旦释放就批准申请队列中的第一个事务获得锁 详细说明 * * * 0.2 事务的四个特性(ACID特性) 原子性:事务是逻辑工作单位,不可分割 一致性:对数据库的更改须保证前后皆处于一致状态 隔离性:一个事务的执行不能被其他事务干扰 持续性:一旦提交,对数据库的修改是永久性的 破坏ACID特性的因素: (1) 多个事务并发运行,不同事物的操作交叉执行; (2) 事务在运行过程中被强行终止。 基础知识 0 0.3 多用户数据库系统 定义:允许多个用户同时使用的数据库 例如:飞机订票数据库系统、火车订票数据库系统、彩票购买数据库系统、银行数据库系统 并发性:多事务在相同时间访问和修改数据的能力 基础知识 0 0.4 事务运行方式 串行方式: 依次运行;资源限制 交叉并发方式(Interleaved Co

文档评论(0)

1亿VIP精品文档

相关文档