3相コミット

コンピュータネットワークやデータベースにおいて、3相コミットプロトコル(3PC)は分散アルゴリズムであり、分散システムの全ノードがデータベーストランザクションのコミットに合意することを可能にするものである。しかし、2相コミット(2PC)とは違い、3PCはノンブロッキングである。より詳細には、3PCはトランザクションがコミットするか、中止するかのいずれかにかかる時間に上限を設ける。この性質により、もしあるトランザクションが3PCによりコミットしようとして、あるロックを行っている場合、タイムアウトによりそのロックが解除されることが保証される。
プロトコル説明.
このプロトコルを説明するにあたり、2相コミットと類似の用語を使用する。したがって、一つの調整者(coordinator)サイトがトランザクションを指揮し、一つあるいは複数の参加者(cohorts)が調整者からの指示を受けるものとする。
問題点.
このアルゴリズムの主な問題として、ネットワークがセグメント化されていると復旧が出来ないということがある。最初の3PCアルゴリズムはフェイルストップモデルを前提としており、その場合、プロセスがクラッシュにより障害を起こし、クラッシュは正確に認識が可能であり、これはネットワークパーティションや非同期通信においては適用できない。