J第8章并发控制1的.pptVIP

  • 4
  • 0
  • 约1.81千字
  • 约 84页
  • 2017-08-20 发布于浙江
  • 举报
J第8章并发控制1的

数据库系统概论 An Introduction to Database System;第八章 并发控制;8.1 并发控制概述; ;并发控制(续);并发控制(续);事务并发执行带来的问题;8.1 并发控制概述;可见, 实际共卖出2张票,而数据库中只减少了1张. 这种情况称为数据的不一致性,是由并发操作相互干扰引起的. T1的修改被T2覆盖了!;并发操作带来的数据不一致性:;1. 丢失修改;T1;2. 不可重复读;? ? ? 读B=100 B←B*2 写回B=200 ? ;不可重复读 分三类:;3. 读“脏”数据;?? ? ? 读C=200 ? ? ? ;;8.2 封锁;一、什么是封锁;二、基本封锁类型;排它锁;共享锁;DBMS常用以下方式表示加锁和释放锁:;三、锁的相容矩阵;8.3 封锁协议; 1级封锁协议;1级封锁协议举例:可以防止丢失修改 ;1级封锁协议,不能避免读“脏”数据;1级封锁协议不能保证可重复读; 2级封锁协议;2级封锁协议; 3级封锁协议;3级封锁协议举例;3级封锁协议;4.封锁协议小结;封锁协议小结(续);8.4 活锁和死锁;8.4.1 活锁;如何避免活锁;8.4.2 死锁;解决死锁的方法;1. 死锁的预防;(1)一次封锁法;例:一次封锁法,预防死锁;一次封锁法(续);(2)顺序封锁法;顺序封锁法(续);死锁的预防(续);2. 死锁的诊断与解除;检测死锁方法(1)超时法;检测死锁方法:(2)等待图法;;死锁的诊断与解除(续);8.5 并发调度的可串行性;一、什么样的并发操作调度是正确的;以不同的顺序串行执行事务也有可能会产生不同的结果,但由于不会将数据库置于不一致状态,所以都可以认为是正确的。 定义: 几个事务的并行执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。这种并行调度策略称为可串行化(Serializable)的调度。;可串行性是并行事务正确性的唯一准则 例:现在有两个事务,分别包含下列操作:   事务T1:读B;A=B+1;写回A; 事务T2:读A;B=A+1;写回B; 假设A的初值为2,B的初值为2。;对这两个事务的不同调度策略如下 串行执行有以下两种调度策略: 串行调度策略1:按先T1后T2的顺序 串行调度策略2:按先T2后T1的顺序 交错执行: 不可串行化的调度 可串行化的调度 ;串行调度策略1(先T1,后T2), 是正确的调度;(b) 串行调度策略2(先T2,后T1), 是正确的调度 ;(c) 交错执行,不是可串行化的调度;(d) 交错执行,是可串行化的调度;8.5 并发调度的可串行性;二、如何保证并发操作的调度是正确的;保证并发操作调度正确性的方法 封锁方法:采用两段锁协议(Two-Phase Locking,简称2PL);8.6 两段锁协议;“两段”锁的含义 将事务分为两个阶段: 第一阶段是获得封锁,也称为扩展阶段; 第二阶段是释放封锁,也称为收缩阶段。;例:以下事务1遵守两段锁协议,而事务2不遵守两段协议。 事务1的封锁序列: Slock A ... Slock B ... Xlock C ... Unlock B ... Unlock A ... Unlock C; 事务2的封锁序列(不遵守两段协议): Slock A ... Unlock A ... Slock B ... Xlock C ... Unlock C ... Unlock B; ;若并行执行的所有事务都遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化的。 所有遵守两段锁协议的事务,其并行执行的结果一定是正确的 事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件 即,可串行化的调度中,不一定所有事务都必须符合两段锁协议。;T1 Slock B 读B=2 Y=B Xlock A ? A=Y+1 写回A=3 Unlock B Unlock A ? ? ? ?;图8.7 遵守两段锁协议的事务发生死锁;两段锁协议(续);8.7 封锁的粒度;一??什么是封锁粒度;8.7.1 封锁粒度;二、选择封锁粒度的原则;选择封锁粒度的原则(续);8.8 小结;小结(续);小结(续);小结(续);小结(续); 下课了。。。

文档评论(0)

1亿VIP精品文档

相关文档