分布式事务的执行可能会涉及多个站点上的数据操作,在两阶段提交协议中,当事务Ti的所有读写操作执行结束后,事务Ti的发起者协调器Ci向所有参与Ti的执行站点发送<prepare Ti>的消息,当收到所有执行站点返回的<ready Ti>消息后,Ci再向所有执行站点发送<commit Ti>消息。若参与事务Ti执行的某个站点故障恢复后日志中有<ready Ti>记录,而没有<commit Ti>记录,则(应向协调器询问以决定Ti的最终结果)。
两阶段提交(2PC)是保障分布式事务原子性的经典协议,分为准备投票和提交决策两个核心阶段。当参与事务的站点向协调器返回
本题考察的是分布式数据库中两阶段提交(2PC)的故障恢复与判定。
应向协调器询问以决定Ti的最终结果:因此,选择 D。
两阶段提交分为准备阶段(投票阶段)与提交阶段(决策阶段)。
参与者在日志写入ready Ti后进入不确定状态:此时是否最终提交只有协调器的全局决策才能确定。恢复时的处理需依据日志记录来判定所处阶段。
A选项事务Ti已完成提交,该站点无需做任何操作:仅有ready Ti而无commit Ti或abort Ti,说明参与者只到达准备就绪,尚未得知全局决策,不能断言已提交,错误。
B选项事务Ti已完成提交,该站点应做REDO操作:同上,缺少commit Ti的持久证据,不应擅自REDO,错误。
C选项事务Ti未完成提交,该站点应做UNDO操作:处于不确定状态,不能自行回滚;是否撤销须以协调器决策为准,错误。
D选项应向协调器询问以决定Ti的最终结果:参与者恢复发现有
因此,选择 D。
