三阶段提交 三阶段提交英語Threephase commit也叫三阶段提交协议英語Threephase commit protocol是在電腦网络及数据库的范畴下令一个分布式系统内的所有节点能够执行事务的提交的一种分布式算法三阶段提交是为了解决两阶段提交协议的缺点而设计的 与两阶段提交不同的是三阶段提交是一種非阻塞的协议三阶段提交在两阶段提交的第一阶段与第二阶段之间插入了一个准备阶段令原先在两阶段提交中参与者在投票之后由于协调者发生崩溃或错误而导致参与者处于无法知晓是否提交或者中止的不确定状态所产生的可能相当长的延时的问题得以解决 舉例來說假設有一個決策小組由一個主持人負責與多位組員以電話聯絡方式協調是否通過一個提案以兩階段提交來說主持人收到一個提案請求打電話跟每個組員詢問是否通過並統計回覆然後將最後決定打電話通知各組員要是主持人在跟第一位組員通完電話後失憶而第一位組員在得知結果並執行後老人痴呆那麼即使重新選出主持人也沒人知道最後的提案決定是什麼也許是通過也許是駁回不管大家選擇哪一種決定都有可能與第一位組員已執行過的真實決定不一致老闆就會認為決策小組溝通有問題而解雇三階段提交即是引入了另一個步驟主持人打電話跟組員通知請準備通過提案以避免沒人知道真實決定而造成決定不一致的失業危機而三阶段提交為什麼能夠解決二階段提交的問題呢回到剛剛提到的狀況在主持人通知完第一位組員請準備通過後兩人意外失憶即使沒人知道全體在第一階段的決定為何全體決策組員仍可以重新協調過程或直接否決不會因出現不一致決定而失業那麼當主持人通知完全體組員請準備通過並得到大家的再次確定後進入第三階段當主持人通知第一位組員請通過提案後兩人意外失憶這時候其他組員再重新選出主持人後仍可以知道目前至少是處於準備通過提案階段表示第一階段大家都已經決定要通過了此時便可以直接通過