平成28年度 春期 データベーススペシャリスト試験 午前II 問14
【問題14】
分散データベースシステムにおいて,複数のデータベースを更新する場合に用いられる2相コミットの処理手順として,適切なものはどれか。
主サイトが各データベースサイトにコミット準備要求を発行した場合,各データベースサイトは,準備ができていない場合だけ応答を返す。
主サイトは,コミットが可能であることを各データベースサイトに確認した後,コミットを発行する。
主サイトは,各データベースサイトにコミットを発行し,コミットが失敗した場合には,再度コミットを発行する。
主サイトは,各データベースサイトのロックに成功した後,コミットを発行し,各データベースサイトをアンロックする。
【解説】
ア: 主サイトが各データベースサイトにコミット準備要求を発行した場合,各データベースサイトは,準備ができていない場合だけ応答を返す。
誤り。2相コミットの「準備フェーズ」では,データベースサイトは準備が完了している場合でも応答(準備完了通知)を返す必要があります。
イ: 主サイトは,コミットが可能であることを各データベースサイトに確認した後,コミットを発行する。
正しい。2相コミットは「準備フェーズ」と「コミットフェーズ」の2段階で行われます。この記述は2相コミットの正しい処理手順を表しています。
ウ: 主サイトは,各データベースサイトにコミットを発行し,コミットが失敗した場合には,再度コミットを発行する。
誤り。コミットが失敗した場合には,システムはロールバック処理を行う必要があります。再度コミットを発行することはありません。
エ: 主サイトは,各データベースサイトのロックに成功した後,コミットを発行し,各データベースサイトをアンロックする。
誤り。2相コミットはロックを用いることがあるものの,この記述は2相コミットの手順そのものを正確に表していません。
【答え】
イ: 主サイトは,コミットが可能であることを各データベースサイトに確認した後,コミットを発行する。
出典:平成28年度 春期 データベーススペシャリスト試験 午前II 問14