文档详情

第11章并发控制_第4版讲述.ppt

发布:2017-04-04约1.22万字共102页下载文档
文本预览下载声明
第十一章 并发控制 11.1 并发控制概述 11.2 封锁 11.3 活锁和死锁 11.4 并发调度的可串行性 11.5 两段锁协议 11.6 封锁的粒度 11.7 小结 11.7 小结 数据共享与数据一致性是一对矛盾 数据库的价值在很大程度上取决于它所能提供的数据共享度 数据共享在很大程度上取决于系统允许对数据并发操作的程度 数据并发程度又取决于数据库中的并发控制机制 数据的一致性也取决于并发控制的程度。施加的并发控制愈多,数据的一致性往往愈好 小结(续) 数据库的并发控制以事务为单位 数据库的并发控制通常使用封锁机制 两类最常用的封锁 小结(续) 并发控制机制调度并发事务操作是否正确的判别准则是可串行性 并发操作的正确性则通常由两段锁协议来保证。 两段锁协议是可串行化调度的充分条件,但不是必要条件 小结(续) 对数据对象施加封锁,带来问题 活锁: 先来先服务 死锁: 预防方法 一次封锁法 顺序封锁法 死锁的诊断与解除 超时法 等待图法 习 题 1.在数据库中为什么要并发控制? 2.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 3.什么是封锁? 4.基本的封锁类型有几种?试述它们的含义。 5.如何用封锁机制保证数据的一致性? 6.什么是封锁协议?不同级别的封锁协议的主要区别是什么? 7.不同封锁协议与系统一致性级别的关系是什么? 8.什么是活锁?什么是死锁? 9,试述活锁的产生原因和解决方法。 10.请给出预防死锁的若干方法。 11.请给出检测死锁发生的一种方法, 12.什么样的并发调度是正确的调度? 13.设T1,T2,T3是如下的三个事务: T1:A:=A+2; T2:A:=A*2; T3:A:=A**2;(A?——A2) 设A的初值为0; 当发生死锁后如何解除死锁? (1)若这三个事务允许并发执行,则有多少种可能的正确结果,请一一列举出来; (2)请给出一个可串行化的调度,并给出执行结果; (3)请给出一个非串行化的调度,并给出执行结果; ( 4)若这三个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度; (5)若这三个事务都遵守两段锁协议,请给出一个产生死锁的调度。 14.试述两段锁协议的概念。 15.试证明,若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。 16.举例说明,对并发事务的一个调度是可串行化的,而这些并发事务不一定遵守两段锁协议。 17.为什么要引进意向锁?意向锁的含义是什么? 18.试述常用的意向锁:IS锁、Ⅸ锁、SIX锁、给出这些锁的相容矩阵。 19.理解并解释下列术语的含义;封锁、活锁、死锁、排它锁、共享锁、并发事务的调度、可串行化的调度、两段锁协议。 冲突可串行化调度(续) [例]今有调度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B) 把w2(A)与r1(B)w1(B)交换,得到: r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B) 再把r2(A)与r1(B)w1(B)交换: Sc2=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B) Sc2等价于一个串行调度T1,T2,Sc1冲突可串行化的调度 冲突可串行化调度(续) 冲突可串行化调度是可串行化调度的充分条件,不是必要条件。还有不满足冲突可串行化条件的可串行化调度。 [例]有3个事务 T1=W1(Y)W1(X),T2=W2(Y)W2(X),T3=W3(X) 调度L1=W1(Y)W1(X)W2(Y)W2(X) W3(X)是一个串行调度。 调度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不满足冲突可串行化。但是调度L2是可串行化的,因为L2执行的结果与调度L1相同,Y的值都等于T2的值,X的值都等于T3的值 第十一章 并发控制 11.1 并发控制概述 11.2 封锁 11.3 活锁和死锁 11.4 并发调度的可串行性 11.5 两段锁协议 11.6 封锁的粒度 11.7 小结 11.5 两段锁协议 封锁协议 运用封锁方法时,对数据对象加锁时需要约定一些规则 何时申请封锁 持锁时间 何时释放封锁等 两段封锁协议(Two-Phase Locking,简称2PL)是最常用的一种封锁协议,理论上证明使用两段封锁协议产生的是可串行化调度 两段锁协议(续) 两段锁协议 指所有事务必须分两个阶段对数据项加锁和解锁 在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁 在释放一个封锁之后,事务不再申请和获得任何其他封锁 两段
显示全部
相似文档