实例介绍
这是复习时整理的部分课后习题答案,教材对应于分布式数据库原理与应用(邵佩英 第二版 科学出版社)
基本原理 解:新的R,S,T如下 (1)采用半连接操作的分布式查询处理是在从一个站点传送关系到另一个站 点做连接之前,先除去那些与连接无关的薮据,减少做连接採作的关系叶的数 D E 据量,从而减少站点间数据的传输量,减少传输的代价。 5 (2)如果只需要一个关系中一小部分元组参与和另一个关系连接的话,这是 536 6 个使数据传输量最小化的非常有效的方案。此时有T半<T全,采用半连接方 案是合适的。在分布式数据库的查询优化中,这是常用的方法之 346 683 389 采用半连接优化算法的步骤:(1)讣算每种半接方案的代价,并从中选择 535 科最佳方案; (2)选择传输代价最小的站点训算采用全连接方案的代价:(3)比较两和方案 对受到影响的的方突重新计算得益和费用 確定最优方案。 适用情形:只需要一个关系中的一小部分元组参与和另一个关系连接 方絮半连接p得益费用传送属性 35概述基于直接连接算法查询优化的基本原理和适用情形 P1 R∞s2313*3*62*3|s.Bsc 其于连接算法的的查询优化处理中的站点以来算法、分片和复制算法、站点依 赖和数据复制算法,以及Hash划分算法,主妟是使得连接操作的数据传送量最 z nN.en. 小(最好是无数据传送)和负毂均衡,从有达到优化目的 P3 s∞T2313*3*31*3TD 如果局鄣处理费用是主要的,则采用直接连接方案; P4 Tos1|1*3*41*3sD 36设有关系R,S,T如图313所示。 )设计连接R∞S∞T。(2)计算半连接R∝S,S∝R,S∝T,T∝R,T∝S, b)选择得益最高的P4进行优化,得到新的RS’,T’,并对受到影响的方案重 新计算得益和费用 新的R,S’,T如下 B C B D E I 6 5 6 38 3 856 对受到影响的的方案重新计算得益和费用 年:(1) 方案半连接p得益费用传送属性 P1 R∞S'2313*3*62*3s.BSC ABCDE 23 P3 soT2313*3*31*2T:D 小S=1683RNs小NT=168389 5356 5|3|59 c)选择得益最高的P1进行优化,得到新的R’,S’,T’,并对必到影响的方案重 2683 新计算得益和费用。新的R',S 如下 解: 23 5 16|8 669 168ssJT=683 TSJR结采为空 RSJT结果为空 389 66日3 26|8 对受到影响的的方案重新训算得益和费用 方案半连接|p得益费用传送属性 TSJJ=669 38 37如果习题35中的三个关系RS,T分别位于三个不同的站 p3s∞r231*3*31+2|T 点ΣYZ。若采用基于半连接算法计算连接R∞S∞T,请选择使 得传输代价最小的连接执行的站点和确定半连接序列。 解:假设每个属性域长度均为1B,考患所有的半连接 d)选择得益最髙的P3进行优化,得到X,Y,Z站点上最终的R’,’’,T’。 X,Y,Z站点上最终的R’,S’,T’如下 方案半连接得益费用传送属性 p1R∞s23|18*36|2*5sBsc P2 SR1212*3*6 24 4R.B RC R'=168 T'=659 339 P3s∞231*3°61*3|TD 68 P4 T∞1/2|1/2*3*41*4s.D 所以选择冬站点做连接的代价为: Ⅹ站点代价=2*3+2*3=12 a)选择得益最高的P2进行优化,得刭新的R,S′,T,并对受到影响的的 Y站点代价=4*3+2*3=18 7站点代价-4*3+2*3-18 方案重新计算得谧和费用 故选择Ⅹ站点作为收集站点代价最低。 出简化过程得知半连接过程为: 原语作为事务失败的结束 Begin transaction原语:开始一个事务 将S’传送给T做半连接T∞S’得到T 将S’传送给R,做半连接R∝S’得刭R 子事务或操作序列 将T’传送给S’,做半连接S’∝T’得到S Commit原语:事务成功完成的结束 (R∝(S∝R))((SR)(Tw(S∞R)∞(T(S=R)) Rollback或 abort原浯:事务大败的结束 38设某公司的雇员关系为 状态:活动( active)、部分提交( partially committed)、失败( failed)、叫滚/夭 employee(name, address, salary, plant-number), plant-number k 折 rollbackjaborted)、提交( committed 平分片这个关系,每个片段都有两个副:一个副本存放在New 分布式事务所持有的性质:大量的数据传递、通信原浯和控制报文 42请用自己的语言描述分布式事务管理的抽象模型和分布式事 York站点,另一个副本存放在工厂的站点。请为在 Toronto站点 务执行的控制模型。 提出的下列查询设计一个好的处理策略。 分有式事务管理的抽象模型: (1)找出Boce厂的所有雇员。 在分布式数据库系统中,事务管理功能分成两个层次。 (2)找出所有雇员的平均工资。 在每个沽点上,局韶事务管理器进行局部事务的管理,负责本站点事务的 (3)找出在如下每个站点T资最高的雇员姓名: Toronto, 执行,完成对本站息数据库数据的访问; Edmonton, Vancouver, Montreal 对整个分布式数据库系统,由驻留在各个站点上的分布式亨务管理器 共同协作,实现对分布式事务的协调和管理。 (4)找出该公司中工资最低的员姓名。 1、将Boce站点上的 employee片段副本传送到 Toronto站点,呈现给用户 43分布式数据厍系统中的事务管理与集中式数据库系统中的事 务管理有何不同? 2、1)在 New York站点的 employee关系上使用函数avgO取得平均工资Ⅹ 分布式与集中式相比,会多遇到一些问题:(1)处理数据项的多个副本 2)将Ⅹ传送刭 Toronto站点,早现给用户 (2)单个站点的故障;(3)通信网络的故障;(4)分布式提父 44什么是事务的提交点?为什么说他们很重要? 3、1)分别在 Toronto, Edmonton, vancouver, Montreal这四个站点钓 employee 当事务所有的站点数据库存取操作都已成功执行,并且所有操作对数据库 片段副本上使用函数maxO取得最高工资Ⅹ1,X2,X3,X4 的影响祁记录在口志中时,该事务就到达提交点。 提交点后事务就成为已提交的事务,并假定其结果已永久记录在数据库屮 2)在四个站点上分别投影出最高T资X1X2,X3,X4所对应的雇员姓名 事务的永久性)。 Y1.Y2Y3.Y4 事务在日志中写入提交记录[mmit,T 在系统发生故障时,需要扫描日志,裣査邡些已在日志中写入 3)分别将Y2,Y3,Y4传送到 Toronto站点 4〕最后在 Toronto站点将Y1,Y2,Y3,Y4执行并澡作,得到最后结果呈现给用户 start transaction,叮,但没有写入[ ommit,们的所有事务T。恢复时必须回滚 4、1)在 New york站点的 employee关系上使用函数minO取得最低一资X 这些事务以取消它们对数据的影响。此外,还必须对日志中记录的亠提交子 2)在 employee关系上投影出最低工资X所对应的雇员姓名Y 事务的所有写操作进行恢复,这样它们对数据床的作用才可根据这些记录重做 将Y传送到 Toronto站太,呈现给用户 Redo o 39考虑关系 employee(eno,name, address, salary, plant-number主 45凵志、档案库和检査点的作用是什么?典型的山志包含哪 码为eno, machine( machine-number;type, plant-number)主码为ma些内容?为什么要“先写日志”? chine-number。假定关系 employee按 plant-number水平分片,且 口志的作用是为了能够从故障状态中恢复有影响的事务 每个片段本地存放在它所对应的工厂站点;关系 machine没有被分 档案库的作用是为了防止因介质放障而破坏日忐和数据库。 片,整个关系存放在 Armonk站点(整个系统站点的个数等于工 检杳点的作用是为了便于恢复事务。 的个数+1),并且假定存放 machine关系的 Armonk站点就是提出 典型的日志包含了每个改变数据项值的写操作记录。 查询和需要结果的站点。请为下列的查询设计一个好的处理策略 因为系缭崩溃时主存中的内容可能丟大,所以恢复时只能考虑口写凹磁盘 (1)找出生成机器号为130的工厂的所有雇员的雇员号和姓名。 的日志內容。因此,在事务到达提交点以前,还未写到磁盘的日志的任何部分 1)先在存放 machina关系的 Armonk站点,利用 machine关系找出机器号须被写入醚盘,即“先写日志” 为1130的 plant-number值,设为X 46列出分布式数据库系统中可能出现的故障类型。哪些故障也可 ②将Ⅹ传送到存放 employee的 plant-number=X的片段(设为片段 能出现在集中式数据库系统中? employee)的工厂站点 事务故障、系统故瘴、介质故障、站点故障、通信故障(包括报乂故障、 3再存存放片段 employee的工厂站点,执行 employee片段在cn和 冈络分割故障)。 ame属性上的投影,得到该T厂的所有雇员的雇员号和姓名 事务故障、系统故瘴、介质故障也可能岀现在集中式数据库系统中 47请用自己的语言描述两阶段的提交过程 4最后把结果传送到需夏结果的 Armonk站点,呈献给用户 主要思想:将本地原子性提父行为的效果扩展刭分布式事务、保证分布 (2找出包含机器类型为 milling machine的工厂的所有雇员的雇员号和姓名 式事务提交的原子性,并在不损坏日志的情况下,实岘快速故障恢复,提高DDB ①先在存放 machine关系的 Armonk站点,利用 machine关系找出机器类 系统的可靠性 型为“ mailing machine”的 plant- number,设为X1x2,,Xn 两阶段提交办议把事务的提交过科分为两个阶段: 将ⅹi(i=1,2,…,n)分别传递到存放 employee的 第一阶段:表决阶段,即形成一个共同的决定 plant-number-X-1,2,,n)的片段(设为片段 employee Xi)的T厂站点: 第二阶段:执行阶段,日的是实现这个决定。 ③再分别在存放片段 employee Xi(i=12…,n)的工厂站点,执行 提交过程: employee片段在cno和nane属性上的投影,得到相应工厂的所有雇员 表次阶段:日的是形成一个共同的决定 的雇员号和姓名; 首先,办调者在日志中写入一条开始提交记录,再发送“准备”消息给所 4)各个工厂站点将找出的相应工厂的所有雇员的座员号和姓名传送到需 有参与者,进入等待状态 要结果的 Armonk站点 其次,当参与者收到“准备”消息后,检查是否能够提交本地事务 最后在需要结果的 Armonk站点,将传送米的各个⊥厂的所有底员的雇 如能提交,参与者在日忐屮写入一条开始提交的记示,并发送“建议提交” 员号和姓名执行并操作,得到的最后结果呈现给用户 消息给协调者,然后进入就绪状态 (3)找出 employee oa machine 否则,参与者写入撤销记录,并发送“建议撤销”消息给协调者 这里假定两个关系的大小差不多。此时,关系 employee的每个片段的数 第三,协调者收到所有参与者的消息后,就做山是否提交务的禔定 据量应该比关系 machine的数据量要少很多。 只要有一个参与者投了反对票(建议撤销),协调者从整体上撤销整个事务, 1)先口各个工厂站点把存放在该站点上的关系 employee的片段传送到放发送“全局撤销”消息给所有参与者,进入撤销状态:否则,协调者写入提交 machine关系的 Armonk站点 记汞,发送“全局提交”消息给所有参与者,然后进入提交状态。 然后再存放 machine关系的 Armonk站点,利用传送来的 employee的所有 执行阶段:实现表决玠段的决定,提交或者撤销。 片段重构 employee关系 根据协调者的指令参与者或提交事务或揿销事务.并给协谓者发送确认消 最后在 Armonk站点执行 employee oo machine操作,得到最后结果呈现给息 用户 协调者在日志中写入一条事务结束记录并终止事务 第四章习题 8为什么说两阶段提交协议在不丢失运行日志信息的情况下,可 41概述分布式数据库系统中事务的定义、特性、结构和状念,以从任何故障恢复? 以及分布式事务所持有的性质 因为在执行过程中维护了事务日志,记录了执行恢复所需要的信息。 定义:分布式数据库系统中的事务是一个分布式操作的序列,祓操作的数 据分布在不同的站点上,所以称为分布式事务。 49分布式数据库系统中对多副本数据更新通常采用什么方法? 特性:分布式数据库系统中的事务具有事务的ACI四个性,即原子性 快照方法的优点和缺点是什么? 致性、隔离性和耐久性 主文本更新法、快照方法。 结构:分布式数据阵系统中事务的结构以 begin transaction原语作为一个 快照方法的优点:既避免了某些并发空控制的开销,又便于复杂查询的完 事务的开始,以 commit原语作为个事务成功完成的结束,而以 rollback或 abort 成,是提高系统可用性的有效方法。 缺点:快照只是个只读关系,其中数据只能读而不能写。 等待-死亡模式(非占先权)的方法:如果T对己被T封镬的数据项请求 410为什么说分布式事务增强了数据库的一致性? 封锁的活,则只有在Ti比巧年老时(IiκTj),才允许Ti等待。如果T比巧年 分有式数据库中存在的信息是对客观世界的反映。客魏世界要保持合理的轻(T>T),则T被终止并带有同一时间戳重新启动。这个方法的理沦基础是 状态存在,总是要有一定规则的,这种规则反映到分布式数据中,就是分布最好总是重新启动较年轻的事务,允许较年老的事务去等待匚持有资源的较年 式数据左中的数据要满足一定约東条件,这种约束条件称为一致性约束。一致 轻的事务,但不允诈较乍轻的事务去等待较年老的事务。 性约束可以分为两大类:一类是客观世界本身存在的一定规则,即业务规则的 受伤等待模式(占先权)的方法是:如果T对已被巧纣锇的一数据项凊 致性约東;另一类是分布式数据库管裡的需要,如为了提高系统效率和可靠性采求封锁的话,则只有在I比巧牛轻吋(l>巧j),才允许I等待。否则,Ii比 用冗余数据,即冗余数据的一致性约束。 巧年老〔T叮j),则被终止并带有同一时间戳重新启动而T得铁执行。这个 如果一个数据库中的数捱满疋全部业务规则,就说它是一致的数据库。也 方法的理论基是:只有年轻的等待牛老的。 就是说,欻据库中薮据值对于预先确定的业务规则是一致的口程序员编写的事 异同:1)在非上先权方法中,一事务只有当它请求访问一新的数据项 务,以及事务优化器对事务进行的优化,必须保证在每个事务执行时所有业务时,犭有可能被重新启动。而对已经访间了全部所需数据的事务,在任何情 规则都得到遵守。数据厍理员和数据库的用户,对分布式数据厍糸缭必须支 况下都不会被并发制机构所中止。这个特性对于必须执行在外部廿界中,不 持的业务规则都应有确切的了解。 可逆动作的事务来说是极重要的。而在占先板法中,对一寺有锁的事务虽然已 在分布式数据军中,冗余薮据必縝保持一致。在分布式数掂厍设计时,数 快结束,不再要锁.但仍有可能因艻一叟年老的事务要求访问同一数据项而被中 据库管理员把关系的片段分配到多个成员站点是出于以下两个主要的理由: 上。2)在非占先权方法中,有可能较年老的事务等待年轻的,所以在某种意义 1提高系统的可靠性和可用性。如果用户由于某种原因不能访冋某个成員上来说事务变老就失去了优先性;在占先权法中,则事务变老就增加了优先性。 数据库,那么也们可以访问另一个成员数据库上的框同片段。 在丰占先权方法中,令事务T,比己锁住一资源的T年轻。当巧试图锁住 2〕提高“读”事务的本地性,以驿低通信成本,特別是对读出比写入频密该资源时,T被中止并重浙启动。假定T冉次试图钐住同一资源,如果T长期 高得多的那些应用。但是,如果事务包含对片段的更新则其所有副本也必须做持有该资源,则T将被多次重新后动。在占先权方法中则相反,如果T持有 同栏的更新,这时反而增加而不是降低通信成本 资源,并因一较老的事务I要求此同一资源而被重新启动的话,则新的请求 第五章习题 将不会被重新启动,只是笭待直T结束为止。因此,对占先杈法来说,只有 51为什么说分布式并发控制比集中式并发控制要复杂得多? 次重新启动 分冇式数据库肀的并发控制是以集中式数据库中的并发控制技术为基础 分布式死的一种基本方法 的,分冇式并发控制主要解决多个分布式事务对数据并发执行的正确性。在分 集屮式死锁检测方法:选择一个点负责整个系统的死锁检测死锁检测 布式数据库系统中,事务是一个分布式操作的序列,被操作的数据分布在不同器放到这个站点。每个站点的锁管理器期性地将本站点的LWFG传送给开锁 的站点上。由于数据的分布对用户是透明的,所以,用户应用对数据釣请求是检测器,死锁检测器构造GwFG,并在其中寻找回路;或者,其它每个站点上的 总体约、全局的,应答这类请求的数据,可能存在于构成该分布式环境的任句 锁管珪器周期性地把记录本站点上事务的廾始时间,对锁的持有、请求情况变 站点上。另外,在分布式数据庐中,允许数据被复制 化的动态表,发送给负责处理封锁的站点,由它维护一张全局封锁动态表,形 在多个站点上,当需要对数据执行更新操作时,也必须同时正确地更新它 成 GWFC,并在其中寻抆回路ε如果至少包食一条回路,它会选择一个或者多个 的所有副本。当来自同一站点或/和不同站点的多个一事务对数据进行并发操作 事务,把它们取消并恢复,释放资源,使得其它事务继续进行。选择的标准是 时,如果不能正确处埋,数撫库的完整性和一致性很容易遭到砹仄凵因此,分尽可能欠揿销并怏复的代价最小,如撤销牛轻的事务,揿销占有较少资源的事 务,撤销具有最短运行时间的事务,撤绱具有最长运行时间的事务等,使系统 52描述分布式事务的可串行化理论的一些定义:事务、冲突操作, 情况而定。 并发调度、串行调度、一致性调度、两个调度等价、可行化调度 层次式死镦检测方法:树叶是站点的局部死锁检测器,在本站点建立局 (1:操作集合,包含Rw为数据项1U(A,C1,A 部笭待图。木站点的死锁检测器找出本站点局部等待图中的任何回路,并把有 Ci是ai中最后一个燥作符,且只能出现其中之一个;Ai为撒销 关在全局叫路的信息发送给上一昃死锁检測器。每个丰本地死锁检测器只对 ( abort,Ci为提交 (commit) 它所涉及的紧挨下层进行死锁检测,合并这些接收到的有关潜在全局回跻的信 i:排序关系,即(扫突)作有先后次序执行。 息,并找出任何叵路。如果还有上层死锁检测器,将经过简化的有关潜在全局 (2)如果Ri[x]W[x]∈ai,则它们必满足R(x)<iwix)或Wi(x)<Ri(x) 回路的信息发送给它上一层死钡检测器,由上一层死锁检测器再进行合并,找 (3)Rx,wWix1,Ai,Ci或公式的每一个都是事务T操伫符序列屮的 个操作 出任何全局回路。这样,逐层检测,直到最高层。 冲突操作:如果有两个操作P和Q对同一个数据x进行操作,其中有 分布式死锁检测方法:使用局部信息建造LWFG,该LWFG包含EX节点 个是写操作wX],则P和Q称为冲突操作。 对每次接收到的信息,执行如下对LwFG的修改。对报文屮的每个事务,若 具有如并发调度:令T={2…n}是一组并发执行事务T上的调度S是WFG中不存在,则将其加入。从FX节点开始,按照报文所给的信息,建立 顺序关系<T的偏序集,即S-{aT,<T} 个到下一个事务的边。在新的LWFG中寻找不含EX的Loop,若存在,则检测到 UT简单地说明了调度的域是怎个事务域的并集。死锁,在新的IWFG中找到含有FX的Iop,丁是有潜在的死锁,再按规定向外 (2)①三U<定义排序关系为每个事务排产关系的超集,这保证传送信息 了每一个事务内部的操仵的顺序。 (3)对任意两个突操作pqIS,存在p<q或q≤p关系。定 7什么是多粒度封锁和意向锁?它们在什么情况下使用? 义了冲突操作的执行顺序 多粒度封锁是:封锁的粒度不是单一的一种粒度,而是有多科粒度。可以 串行调度:如果一个调度S中的任意两个事务Ii和T,i≠j,若 定义多粒度树,杖节点是萼亼数据匠,叶节点表示最小约封锁粒度。 ∪n,∑.Un∑/或者∪n∑/∪n1∑/一节点封须时,必须先对它的上层节加感向饿 则称调度S为串行调度 具有意向的多粒度加锁方法中,任意事务T要对一个数据对象力锁,必 即一个事务的一个动作是在另一个事务的最后一个动作完成后开始 须先对它的上层节点加意向锁。中请封锁时应该按自上而下的次序进行,释放 即一个调度屮不同事务的各个探作不会互相交叉,每个事务是相继执行 锁时则应该按自下而上的次序进行。具有意叵锳的多度加锁铖方法提高了系统 致性调度:如果执行一个调度S,可以使得数据库从 致性状态转 的并发度,减少了加锁和释放锁的开销。它已经在实际的DBMS系统中广泛应 变为另一个一致性状态,则称调度S为一致性调度。显然,串行调度是一致性 用,例如 Oracle中。 调度。 58在分布式数据库系统中如何产生和调整全局时标?讨论基于 两调度等价:调度S1与S2是等价的充分条件是:对于两个有冲突的操作 时标的并发控制技术的基本时标法和保守时标法。 O和O,若Oi,Oj∈S1,且OiOj在S1中也成立,则OiOj∈S2,且也有o<Oj 在S2中成立。 全局时标分配方法:使用全局的单调递增的计数器,全局的计数器维护是 可串行化调度:如果一个调度等价于某个串行调度,则该调度砍刈可串行 个难题。全局唯一时甸的形成与调整:每个站点设置一个计数器,每发生一个事 化调度。也就是说,该调度可以通过一系列非冲突动作的交换操作使其成为串 务,计数器加一。发送报文时包含本地计数器值,近似同步各站点计数器 词度 基本时标法规则:每个事务在本站点廾始时赋予一个全局唯一时标。在事 55什么是两阶段封锁协议?它如何保证可串行性?为什么人们 务结束前,不对数据库进行物理更新。事务的每个读操作或写操作都具有该事 经常更愿意采用严格两阶段封锁和严酷两阶段封锁? 务的时标。对每个数据项x,记卜写和读操作的最大时标,记为WTM(x)和 所谓两段锁协议是指所有事务必须分两个阶段对薮据项加锁和解锁:1. RTM(x)。如果事务被亘新启动,则被赋予新的时标 午对仃何数据进行读、写操仵之前,首先要申请并获得对该数据的圭锁。2.在 保守时标法规则:每个事务只在一个站点执行,亡不能激活远程的程序, 释放一个封锁之后,事务不再申请和获得任何其他封锁。因此保证可串行性 但是可以向远程站点发读/写请求,站点i接收到来日不同站点j的读/写请求必 由于实现基本2PL协议要锁管理器必攽要知道事务的锁点位管:保守2PL 须按时标顺序,即每个站点必須按时标顺序发送读/写数据请戏,在传输凵也不 要事先声明续集和写集,这都是难以实现的。严格2PL和严酷2PL容易实现 会改变这个顺序。每个站点都为其它站点发来的读写探作开辟一个缓冲区,分 严格2PL的实现方法是:事务在提交或者撤销之前,绝对不释放仁何一个写锁; 别保存接收到的读/写申请 务T在提父或撤角之前,不能释放任何一个锁(写锁或者读锁,因此它北严格61如何理解分布式数据库系统的可靠性与可用性?如何度量它 2PL更容易实现 56描述死锁预防中的占先权方法和非占先权方法,比较它们的异强调数岸的正确生,要求数据库正确运行,既合果种格化要求录(3)常 同。描述检测分布式死锁的三种基本方法。 用来攉述不可修复的系统 可用性(1)强调的是当需要访问数据库时,它是可用的(2)指在给定的 时间点系统可以正常运行的概率(3)通常用于描述那些可以修复的系统 如何度量它们:(1)平均故障间隔时间,(2)平均修复时间 62分析分布式数据库系统中系统失败的原因,你知道有哪些基本 的容错方法和技术? (1)软故障和硬故障(2)软件和硬件改障 软故障包括间歇性( Intermittent)和瞬变性( transient)故障,通过重启动 来修复 硬故障指永久性故障,错误设汁等。 (1)粹错和错误预防(2)故障检测(3)冗余(4)故障-停止模块和进程对 面向会话的通信 64讨论两阶段提交协议的终结协议和两阶段提交协议的恢复协 议 终结协议在协调老和参与者的定时器超时时发挥作用。超时发生在目的站 在期望的时间内没有从发送站点得到所期望的消息时 处理超时的方法依板于失效发生的时间和失效的类型。因比需要考虑在两 阶段提交协议执行时的不同时间发生失效的情况。由于使用两阶段提交协议的 状态转换图而复讨论变得容易 状态图中,圆形表示状态,边衣示状态转换,终结状态用同心圆表示。边 的标号按如下方式解释:横线上方表示状态转换的原因,即所收到的消息;樻 线下方表示状态转换时所发出的消息。 两阶段提交协议的恢复协议 协调者站点失效 (1)协调者在初始状态失效:发生在协调者初始化提交过程之前,因此 它将在恢复时启动提交过程。 (2)协调者在等待状态失效:这付协调者已经发送了“准备”命令,恢 复时,协调者将从头开始启动提交过程,再次发送“准备”消息。 (3)协调者在提交状态或撤销状态失效:这时,协调者已经扣它的决定 通知了参与者,并终结了事务。在恢复时,如只它已经收到了所有的确认消息 就不需要做任何事情。有则,就要居动终结协议。 参与者站点失效 (1)一个参与着在初始状态大效:在恢复时,该参与者应该单方血撤销 事务。 (2)一个参与着在就绪状态大效:这时协调者已经收到大效站点在大效 前发送的肯定决定 恢复时,失效站点的参与老认为是在就绪状态发生了超时,于是启动终结 协议来处理该事务。 (3)一个参与者在提父状态或撤销状态失效:这些状态表示了终结条件, 所以在恢复时,参与者不需要采取任何专门的措施 65什么是三阶段提交协议?讨论三阶段提交协议的终结协议和 三阶段提交协议的恢复协议 在等待状态和提交状态之间,或者在就绪状念和提交状态之间增加另 种状态作为缓冲状态,用于在准备提交但还没有提交的时候,从初始状态到提交 状态之间有三次状态转换,从而有了3PC协议。 终结协议规则 新协调着在等待状态:将全局撤销事务。此时参与者可能处于初始状态、 就绪状态、撤销状态或预备提交状态等任何状态。若参与者处于预备提交状态 正在等待“全局提交”消息,但它们却收到“仝局撤销”消息。它们的次态转 换图不存在从预备提交状态到教销状态的转换,而这种转换对于终结协议是必 需的,所以该转换应当是执行终结协议时的一种合法转换 新协调着处于预备提交状态:此时参与者可以处于就绪状态、颈备提交状 态或提交状态。没有参与者可能处丁撤销状态。协调者因此将全局提交事务,并 发送“仝局提交”消息。 新协调肴处于撤销状态:收到第一个消息后,参与者也都转项到撤销状态。 PC恢复协议 协调者在等待状态大效 按照终结协议,参与者已终结事务,因此,协调者在恢复时必须向 它们询可以確定如何终结事务。 协调者在预备提交状态失效 终结办议再一次指导可操作参与者终结事务。山于此过程可从预备提 交状态转换到撤销状态,协调者必须询问以确定如何终结事务 个参与者在预备提父状态失效 它必须询问以確定其它参与者如何终结事务。 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论