- 1、本文档共110页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5章_分布式数据库中的并发控制_
通常,数据库总有若干个事务在运行,这些事务可能并发地存取相同的数据,称为事务的并发操作。 当数据库中有多个事务并发执行时,系统必须对并发事务之间的相互作用加以控制,这是通过并发控制机制来实现的。 并发控制就是负责正确协调并发事务的执行,保证这种并发的存取操作不至于破坏数据库的完整性和一致性,确保并发执行的多个事务能够正确地运行并获得正确的结果。 分布式数据库中的并发控制解决多个分布式事务对数据并发执行的正确性,保证数据库的完整性和一致性。比集中式并发控制更复杂。 集中式DB环境 T1 T2 … Tn 分布式DB环境 多处理器 单处理器 事务Ti Ti= { ?i, i } 其中: ?i : 操作符集合:{Ri(x), Wi(x) } U {Ai, Ci } Ai, Ci 是最后的操作符,只能是其一 i : (冲突)操作有序执行,Ri(x) i Wi(x) 或 Wi(x) i Ri(x) 操作符集 读Ri(x)和写Wi(x)动作序列 冲突动作 R1(A) W2(A) W1(A) W2(A) R1(A) W2(A) 一个调度 事务的一个操作序列称为一个调度,一般用S表示 比如,S: R1(x),R2(y),W2(y),R2(x),W1(x),W2(x) 调度S1 (X站点) (Y站点) 1 (T1) a ? X 2 (T1) X ? a+100 5 (T2) c ? X 3 (T1) b ? Y 6 (T2) X ? 2c 4 (T1) Y ? b+100 7 (T2) d ? Y 8 (T2) Y ? 2d 初值: X=Y=0 , 结果: X=Y=200 并发调度定义 令T= {T1,T2,…,Tn} 是一组事务. T上的调度 S 是具有如下顺序关系T的偏序,即S={?T ,T} : (1) ?T= ? Ti (2) T ? ? i (3) 对于任意一组冲突操作 p,q ?S, 存在 p q 或 q p关系 调度 一组事务的调度必须包含这些事务的所有操作 调度中某个事务的操作顺序必须保持与该事务原有的顺序相同 串行调度 一个事务的第一个动作是在另一个事务的最后一个动作完成后开始. 即调度中事务的各个操作不会交叉, 每个事务相继执行. 一致性调度 调度可以使得数据库从一个一致性状态转变为另一个一致性状态,则称调度为一致性调度 调度等价 S1与S2等价, 也就是说, 对于冲突操作, Oi, Oj, Oi Oj在S1中成立, 同时 Oi Oj 在S2中也成立 可串行化调度 如果一个调度等价于某个串行调度,则该调度称为可串行化调度。 也就是说,该调度可以通过一系列非冲突动作的交换操作使其成为串行调度 例子 两个事务,定义如下: T1: Read(x) x=x+10 Write(x) Read(y) y=y-15 Write(y) commit 五种调度: S1={R1(x),x=x+10,W1(x),R1(y),y=y-15,W1(y),C1, R2(x),x=x-20,W2(x),R2(y),y=y*2,W2(y),C2} S2={R1(x),x=x+10,W1(x), R2(x),x=x-20,W2(x), R1(y),y=y-15,W1(y),C1, R2(y),y=y*2,W2(y),C2} S3={R1(x),x=x+10,W1(x), R2(x), x=x-20,W2(x),R2(y),y=y*2,W2(y),C2 ,R1(y),y=y-15,W1(y),C1} S4={R2(x),x=x-20,W2(x),R2(y),y=y*2,W2(y),C2 ,R1(x),x=x+10,W1(x),R1(y),y=y-15,W1(y),C1} S5={R2(x),x=x-20,W2(x), R1(x),x=x+10,W1(x), R2(y),y=y*2,W2(y),C2 ,R1(y),y=y-15,W1(y),C1} 如果将事务提交延迟到两个事务操作完成之后执行,有: 调度S1和S4是串行调度 调度S2和S1的冲突操作具有相同的顺序,因此是等价调度;S2是可串行化调度,也是一致性调度 调度S3虽是一致调度,但是它不与S1或S4等价,所以S3不是可串行化调度 调度S5和S4等价,所以S5是一致调度,也是可串行化调度 有以下推论: 一个可串行化调度必定与某个串行调度等价,且是一致性调度
文档评论(0)