第八篇 章 并发控制 《数据库系统概论》精品(配萨师煊,王珊,第三版).ppt

第八篇 章 并发控制 《数据库系统概论》精品(配萨师煊,王珊,第三版).ppt

  1. 1、本文档共121页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八篇 章 并发控制 《数据库系统概论》精品(配萨师煊,王珊,第三版).ppt

An Introduction to Database System (a) 串行调度策略,正确的调度 Slock B Y=B=2 Unlock B Xlock A A=Y+1 写回A(=3) Unlock A ? ? ? ? ? ? ? Slock A X=A=3 Unlock A Xlock B B=X+1 写回B(=4) Unlock B T1 T2 (b) 串行调度策略,正确的调度 ? ? ? ? ? ? ? Slock B Y=B=3 Unlock B Xlock A A=Y+1 写回A(=4) Unlock A SlockA X=A=2 Unlock A Xlock B B=X+1 写回B(=3) Unlock B ? ? ? ? ? T1 T2 (c) 不可串行化的调度 Slock B Y=B=2 ? ? Unlock B ? Xlock A A=Y+1 写回A(=3) ? ? ? Unlock A ? ? Slock A X=A=2 ? Unlock A ? ? ? Xlock B B=X+1 写回B(=3) ? Unlock B T1 T2 (c) 不可串行化的调度(续) 由于其执行结果与(a)、(b)的结果都不同,所以是错误的调度。 (d) 可串行化的调度 Slock B Y=B=2 Unlock B Xlock A ? A=Y+1 写回A(=3) Unlock A ? ? ? ? ? ? ? ? Slock A 等待 等待 等待 X=A=3 Unlock A Xlock B B=X+1 写回B(=4) Unlock B T1 T2 (d) 可串行化的调度(续) 由于其执行结果与串行调度(a)的执行结果相同,所以是正确的调度。 8.5 并发调度的可串行性 一、什么样的并发操作调度是正确的 二、如何保证并发操作的调度是正确的 二、如何保证并发操作的调度是正确的 为了保证并行操作的正确性,DBMS的并行控制机制必须提供一定的手段来保证调度是可串行化的。 从理论上讲,在某一事务执行时禁止其他事务执行的调度策略一定是可串行化的调度,这也是最简单的调度策略,但这种方法实际上是不可行的,因为它使用户不能充分共享数据库资源。 如何保证并发操作的调度是正确的(续) 保证并发操作调度正确性的方法 封锁方法:两段锁(Two-Phase Locking,简称2PL)协议 时标方法 乐观方法 第八章 并发控制 8.1 并发控制概述 8.2 封锁 8.3 封锁协议 8.4 活锁和死锁 8.5 并发调度的可串行性 8.6 两段锁协议 8.7 封锁的粒度 8.8 Oracle的并发控制 8.9 小结 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; 事务1遵守两段锁协议,而事务2不遵守两段协议。 两段锁协议(续) 并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化的。 所有遵守两段锁协议的事务,其并行执行的结果一定是正确的 事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件 可串行化的调度中,不一定所有事务都必须符合两段锁协议。 两段锁协议(续) T1 Slock B 读B=2 Y=B Xlock A ? ? A=Y+1 写回A=3 Unlock B Unlock A ? ? ? ? T2 ? ? ? ? Slock A 等待 等待 等待 等待 等待 Slock A 读A=3 Y=A Xlock B B=Y+1 写回B=4 Unlock B Unlock A? T1 Slock B 读B=2 Y=B Unlock B Xlock A ? ? A=Y+1 写回A=3 Unlock A ? ? ? ? ? ? ? ? ? T2 ? ? ? ? ? Slock A 等待 等待 等待 等待 Slock A 读A=3 X=A Unlock A Xlock B B=X+1 写回B=4 Unlock B? (a) 遵守两段锁协议 (

文档评论(0)

youngyu0329 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档