平成23年度 春期 データベーススペシャリスト試験 午前II 問12
【問題12】
分散データベースシステムにおいて、複数のデータベースを更新する場合に用いられる2相コミットの処理手順として、適切なものはどれか。
主サイトが各データベースサイトにコミット準備要求を発行した場合、各データベースサイトは、準備ができていない場合だけ応答を返す。
主サイトは、各データベースサイトにコミットが可能であることを確認した後、コミットを発行する。
主サイトは、各データベースサイトにコミットを発行し、コミットが失敗した場合には、再度コミットを発行する。
主サイトは、各データベースサイトのロックに成功した後、コミットを発行し、各データベースサイトをアンロックする。
【解説】
2相コミット(Two-Phase Commit Protocol)は、分散データベース環境でトランザクションの一貫性を確保するためのプロトコルです。2つのフェーズで処理が進みます。
- 準備フェーズ(Prepare Phase)
主サイトが各データベースサイトに「コミット準備要求」を送信します。各データベースサイトは、トランザクションの準備ができたかどうかを応答します。全てのデータベースサイトが「準備完了(YES)」の応答を返した場合のみ、次のフェーズに進みます。
- コミットフェーズ(Commit Phase)
主サイトがコミットを実行するよう全てのデータベースサイトに指示します。コミットが成功した場合、トランザクションが完了します。
ア: 主サイトが各データベースサイトにコミット準備要求を発行した場合、各データベースサイトは、準備ができていない場合だけ応答を返す。
誤り。各データベースサイトは準備が整った場合に「準備完了(YES)」、整っていない場合に「失敗(NO)」の応答を返します。
イ: 主サイトは、各データベースサイトにコミットが可能であることを確認した後、コミットを発行する。
正しい。2相コミットの正しい手順です。準備段階(フェーズ1)で各サイトの応答を確認し、全サイトが「準備完了(YES)」の場合にコミット段階(フェーズ2)に進みます。
ウ: 主サイトは、各データベースサイトにコミットを発行し、コミットが失敗した場合には、再度コミットを発行する。
誤り。コミットが失敗した場合は、ロールバックを実行します。再度コミットを発行することはありません。
エ: 主サイトは、各データベースサイトのロックに成功した後、コミットを発行し、各データベースサイトをアンロックする。
誤り。2相コミットのプロセスにおいて、ロック解除はコミットの結果通知後に行われます。ロックに成功した段階でコミットを発行するのは不適切です。
【答え】
イ: 主サイトは、各データベースサイトにコミットが可能であることを確認した後、コミットを発行する。
出典:平成23年度 春期 データベーススペシャリスト試験 午前II 問12