データが複数のデータベースにまたがってるとか、分散トランザクションなどで複数のプロセスが「同時」になんらかのアクションを取ることが必要な場面がある。「同時」といっても、論理的な同時性があればそれでいい。 困るのが、一つのプロセスではアクションを取ったのに、別のプロセスではアクションを取ってないという状況。なんらかの理由で全員がアクションを取れなかったというのは、仕方が無いということにする。ここでよく例に出てくるのが、銀行の送金とか飛行機の席の予約。送金元では引き下ろしのアクションが取られたのに、送金先では振込みのアクションが取られなかったら困るというのが分かると思う。 内部の様子が分かる例としては、何人かが全く同じ幕の内弁当をもらったとして、全員が同時に同じおかずを食べるという状況。 2 phase commit (2PL; 二相コミット) は調整役(コーディネータ)と参加者が何人いて、全