令和元年度秋期 応用情報技術者試験 午前 問30
分散トランザクション管理において,複数サイトのデータベースを更新する場合に用いられる 2 相コミットプロトコルに関する記述のうち,適切なものはどれか。
- ア 主サイトが一部の従サイトからのコミット準備完了メッセージを受け取っていない場合,コミット準備が完了した従サイトに対してだけコミット要求を発行する。
- イ 主サイトが一部の従サイトからのコミット準備完了メッセージを受け取っていない場合,全ての従サイトに対して再度コミット準備要求を発行する。
- ウ 主サイトが全ての従サイトからコミット準備完了メッセージを受け取った場合,全ての従サイトに対してコミット要求を発行する。
- エ 主サイトが全ての従サイトに対してコミット準備要求を発行した場合,従サイトは,コミット準備が完了したときだけ応答メッセージを返す。
解答・解説を見る
正解:ウ
AI解説
2相コミットプロトコルでは、主サイトが全ての従サイトから「コミット準備完了」の応答を受け取った場合に限り、全ての従サイトに対してコミット要求(実際のコミット実行指示)を発行する。一部でも準備未完了があれば全体をアボートするのが原則である。 ア: 一部の従サイトから準備完了メッセージを受け取っていない場合、準備完了した従サイトだけにコミット要求を出すのではなく、全体としてアボート(中止)する必要があるため誤りである。 イ: 一部の従サイトから準備完了メッセージを受け取っていない場合、再度準備要求を出すのではなく、通常はタイムアウト等によりトランザクション全体をアボートする処理に移るため誤りである。 ウ: 主サイトが全ての従サイトからコミット準備完了メッセージを受け取った場合に、全ての従サイトへコミット要求を発行するという流れは2相コミットプロトコルの正しい動作であり正解である。 エ: 従サイトがコミット準備要求に対して準備完了のときだけ応答を返すという記述は誤りで、実際には準備ができない場合も「準備不可」の応答を返す必要があり、応答自体は必ず行われる。 💡 2相コミットは「第1相:全従サイトへ準備要求→応答収集」「第2相:全員準備完了ならコミット、一つでも失敗ならアボート」という2段階構造を必ず押さえておく。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。