2相コミット
分散システムにおける2相コミットの典型的な改善策として木構造2相コミット(Tree 2 Phase Commit)がある。調整者は通信の木構造のトップ(根)となり、参加者はその木構造上の他のノードとなる。調整者からのメッセージは木構造上を伝播していき、途中のノードに相当する参加者は下位の参加者の応答を集めて上位に渡す。ただし、「停止」メッセージは下位の応答全てを待つのではなく、即座に上位に送られる。
動的2相コミット(Dynamic 2 Phase Commit)は、調整者を予め定めない木構造2相コミットである。最も下位のノード(葉)はトランザクションが完了したときに「合意」メッセージを上位に送り、調整者は早い者勝ちで動的に決定される。動的2相コミットは高速であり、最小時間でコミットを完了できる。
「停止」メッセージで応答した参加者がいた場合:
調整者は全参加者に「ロールバックせよ」というメッセージを送る。
各参加者は Undoログを使ってトランザクションをする前の状態に戻し、トランザクション中に保持していた全ロックとリソースを解放する。
各参加者は調整者に「完了応答」メッセージを送る。
調整者は全参加者から完了応答を受け取った時点でトランザクションが完了したものとする。