- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
10.5并发调度的可串行性一、什么样的并发操作调度是正确的二、如何保证并发操作的调度是正确的一、什么样的并发操作调度是正确的计算机系统对并行事务中并行操作的调度是的随机的,而不同的调度可能会产生不同的结果。将所有事务串行起来的调度策略一定是正确的调度策略。如果一个事务运行过程中没有其他事务在同时运行,也就是说它没有受到其他事务的干扰,那么就可以认为该事务的运行结果是正常的或者预想的什么样的并发操作调度是正确的(续)以不同的顺序串行执行事务也有可能会产生不同的结果,但由于不会将数据库置于不一致状态,所以都可以认为是正确的。几个事务的并行执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。这种并行调度策略称为可串行化(Serializable)的调度。什么样的并发操作调度是正确的(续)可串行性是并行事务正确性的唯一准则例:现在有两个事务,分别包含下列操作:事务1:读B;A=B+1;写回A;事务2:读A;B=A+1;写回B;假设A的初值为2,B的初值为2。什么样的并发操作调度是正确的(续)对这两个事务的不同调度策略串行执行串行调度策略1串行调度策略2交错执行不可串行化的调度可串行化的调度串行调度策略,正确的调度
(假设A的初值为2,B的初值为2)SlockBY=B(=2)UnlockBXlockAA=Y+1写回A(=3)UnlockA???????SlockAX=A(=3)UnlockAXlockBB=X+1写回B(=4)UnlockBT1T2(b)串行调度策略,正确的调度???????SlockBY=B(=3)UnlockBXlockAA=Y+1写回A(=4)UnlockASlockAX=A(=2)UnlockAXlockBB=X+1写回B(=3)UnlockB?????T1T2与(a)调度相比,A、B的值虽不同,但不影响数据库的一致性(c)不可串行化的调度SlockBY=B=2??UnlockB?XlockAA=Y+1写回A(=3)???UnlockA??SlockAX=A=2?UnlockA???XlockBB=X+1写回B(=3)?UnlockBT1T2由于其执行结果与(a)、(b)的结果都不同,所以是错误的调度(d)可串行化的调度SlockBY=B=2UnlockBXlockA?A=Y+1写回A(=3)UnlockA????????SlockA等待等待等待X=A(=3)UnlockAXlockBB=X+1写回B(=4)UnlockBT1T2由于其执行结果与(a)的结果相同,所以是正确的调度10.5并发调度的可串行性一、什么样的并发操作调度是正确的二、如何保证并发操作的调度是正确的二、如何保证并发操作的调度是正确的为了保证并行操作的正确性,DBMS的并行控制机制必须提供一定的手段来保证调度是可串行化的。从理论上讲,在某一事务执行时禁止其他事务执行的调度策略一定是可串行化的调度,这也是最简单的调度策略,但这种方法实际上是不可行的,因为它使用户不能充分共享数据库资源。如何保证并发操作的调度是正确的(续)保证并发操作调度正确性的方法封锁方法:两段锁(Two-PhaseLocking,简称2PL)协议时标方法乐观方法10.6两段锁协议两段锁协议的内容1.在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁2.在释放一个封锁之后,事务不再获得任何其他封锁。两段锁协议(续)“两段”锁的含义事务分为两个阶段第一阶段是获得封锁,也称为扩展阶段;第二阶段是释放封锁,也称为收缩阶段。两段锁协议(续)例:事务1的封锁序列:SlockA...SlockB...XlockC...UnlockB...UnlockA...UnlockC;事务2的封锁序列:SlockA...UnlockA...SlockB...XlockC...UnlockC...UnlockB;事务1遵守两段锁协议,而事务2不遵守两段协议。两段锁协议(续)并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化的。 所有遵守两段锁协
原创力文档


文档评论(0)