返回
当前 - 选择题 - 数据库事务与并发控制
困难
题号:0120160500029
单选题
2016年5月第29题

分布式事务的执行可能会涉及多个站点上的数据操作,在两阶段提交协议中,当事务Ti的所有读写操作执行结束后,事务Ti的发起者协调器Ci向所有参与Ti的执行站点发送<prepare Ti>的消息,当收到所有执行站点返回的<ready Ti>消息后,Ci再向所有执行站点发送<commit Ti>消息。若参与事务Ti执行的某个站点故障恢复后日志中有<ready Ti>记录,而没有<commit Ti>记录,则(应向协调器询问以决定Ti的最终结果)。

问题(1)
浓缩知识点

两阶段提交(2PC)是保障分布式事务原子性的经典协议,分为准备投票和提交决策两个核心阶段。当参与事务的站点向协调器返回并写入本地日志后,会进入不确定状态,此时该站点仅确认自身已完成事务准备,但未获取协调器的全局最终决策。若站点故障恢复后,发现本地日志仅存在记录、无记录,不能擅自执行REDO提交或UNDO回滚操作,必须向协调器询问事务的全局最终决策,由协调器根据整体投票结果给出统一的提交或回滚指令,以此保证分布式事务的全局一致性,避免各站点自行决策引发的数据不一致问题。

正确答案
D

本题考察的是分布式数据库中两阶段提交(2PC)的故障恢复与判定

应向协调器询问以决定Ti的最终结果:因此,选择 D。

两阶段提交分为准备阶段(投票阶段)与提交阶段(决策阶段)。
参与者在日志写入ready Ti后进入不确定状态:此时是否最终提交只有协调器的全局决策才能确定。恢复时的处理需依据日志记录来判定所处阶段。
A选项事务Ti已完成提交,该站点无需做任何操作:仅有ready Ti而无commit Ti或abort Ti,说明参与者只到达准备就绪,尚未得知全局决策,不能断言已提交,错误。
B选项事务Ti已完成提交,该站点应做REDO操作:同上,缺少commit Ti的持久证据,不应擅自REDO,错误。
C选项事务Ti未完成提交,该站点应做UNDO操作:处于不确定状态,不能自行回滚;是否撤销须以协调器决策为准,错误。
D选项应向协调器询问以决定Ti的最终结果:参与者恢复发现有但无最终决策记录时,应执行终止协议/询问协调器以获取全局提交/回滚结果,这是2PC的正确处理,正确。
因此,选择 D。

联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有