分散データベースにおける2相コミットプロトコルの処理手順

分散トランザクションのアトミック性(All or Nothing)を保証する2相コミット(Two-Phase Commit: 2PC)の処理手順に関する問題です。 第1相(準備相 / Prepare Phase): 主サイト(調整者: Coordinator)がすべての参加データベースサイト(参加者: Participant)にコミット準備要求(PREPARE)を発行し、各サイトがコミット可能(READY)か不可(ABORT)かの応答を収集・確認します。 第2相(コミット相 / Commit Phase): すべての参加サイトからコミット可能の応答が得られた場合、主サイトは全サイトにコミット指示(GLOBAL COMMIT)を発行します。1つでも準備不可または無応答のサイトがあれば、全サイトにロールバック(GLOBAL ABORT)を発行します。 したがって、「コミットが可能であることを各データベースサイトに確認した後,コミットを発行する」とした エ の記述が適切です。 各データベースサイトは、コミット準備が整った場合(READY)も不可の場合(ABORT)も、必ず主サイトに応答を返さなければなりません。 コミットが失敗したサイトがある場合、再コミットを発行するのではなく、全体の一貫性を保つためロールバック処理を実行します。 ロックの獲得はトランザクション実行中に行われ、コミット完了後にアンロックされます。コミット前に主サイトがアンロックを行うことはありません。

分散データベースシステムにおいて,複数のデータベースサイトを更新する場合に用いられる2相コミットの処理手順のうち,適切なものはどれか。

出典平成31年春期 午前Ⅱ
ア
主サイトが各データベースサイトにコミット準備要求を発行した場合,各データベースサイトは,準備ができていない場合だけ応答を返す。
イ
主サイトは,各データベースサイトにコミットを発行し,コミットが失敗した場合には,再度コミットを発行する。
ウ
主サイトは,各データベースサイトのロックに成功した後,コミットを発行し,各データベースサイトをアンロックする。
エ
主サイトは,コミットが可能であることを各データベースサイトに確認した後,コミットを発行する。