分布事务管理
1)分布式事务:在分布式数据库系统中,一个分布式事务是由若干个不同站点上的子事务组成的。
2)分布式事务与集中式事务的相同特性:与集中式事务的特性相同为ACID,原子性、一致性、隔离性和持久性。
分布式事务与集中式事务的不同特性:执行特性、操作特性和控制报文。执行过程中,分布式事务要必须创建一个控制进程,协调子事务、数据及控制报文;而集中式事务仅由并行调度算法进行调度即可。操作过程中,分布式事务还要加入大量的通信原语和控制原语。集中式事务没有使用控制报文。
3)分布式数据库故障:分为节点故障(事务故障、系统故障、介质故障),通信故障(报文故障、网络分割故障)。其中报文故障包括报文错、报文丢失、报文延迟。
4)分布式数据库的恢复原则:保证事务原子性的措施称为事务故障恢复,有几个原则是,
孤立和逐步退出事务的原则UNDO;
成功结束事务原则REDO;
夭折事务的原则。(撤消全部事务,恢复到初态)
在分布式事务恢复中,本地事务的恢复和集中式事务的恢复相同,由本地事务管理器LTM执行。整个的分布式事务的恢复由LTM与DTM(分布式事务管理器)协同完成。
5)两阶段提交协议2PC(准备提交、建议提交/撤销、全局提交/撤销、确认)
在2PC中,将分布式事务的某一个代理指定为协调者,其它代理都是参与者。参与者可以进行单方面撤销。2PC可以分为两个步骤:先是表决阶段,然后是执行阶段。表决中实行一票否决。
2PC对故障的恢复:(1)场地故障 参与者在写入“建议提交”前发生故障 : --协调者等到超时后将取消事务,该参与者自行可以 终止事务。
参与者在写入“建议提交”后发生故障: --而其它参与者可以正常结束事务,该参与者 要访问协调者或其它参与者获得之前协调者作出 的决定并执行相应的操作。
协调者在写入“准备提交”后,在写入“全局提交/撤销”前发生故障:
--协调者从头恢复提交协议
协调者在写入“全局提交/撤销”后,在写入“事务结束”记录前发生故障:
--协调者恢复时要给所有的参与者重发之前的全局决定。
(2)报文丢失 丢失参与者的回答报文(建议提交/撤销): --协调者将取消整个事务
丢失“准备提交”报文: --协调者在超时后将取消整个事务
丢失“全局提交/撤销”报文: --涉案参与者将请求协调者重发该报文
丢失“确认”报文: --协调者将重发全局报文,参与者无论子事务 提交与否都要给予确认。
(3)网络分割故障,整个网络被分为2组,协调者组和参与者组。各自进行故障处理。