平成29年度 春期 データベーススペシャリスト試験 午前II 問14
【問題14】
データベース更新における2相コミットに関する記述のうち,適切なものはどれか。
2相コミットは,トランザクションの処理途中のデータを他のトランザクションから参照できなくする制御方式のことである。
2相コミットを行うためには,同時に更新しようとする分散データベースの全てが更新可能かどうかを判断するためのやり取りが必要である。
2相コミットを採用している場合,ロールバックは発生しない。
2相コミットを使えば,通信異常が発生しても,トランザクションをコミットさせることができる。
【解説】
2相コミットの概要
2相コミット(Two-Phase Commit)は、分散トランザクション管理のためのプロトコルで、トランザクションの一貫性を確保します。以下の2つのフェーズで構成されます:
- 準備フェーズ(Prepare Phase):トランザクションが適用可能かを各データベースで確認します。
- コミットフェーズ(Commit Phase):すべてのデータベースが適用可能な場合、実際にコミットを実行します。
ア: 2相コミットは,トランザクションの処理途中のデータを他のトランザクションから参照できなくする制御方式のことである。
誤り。これは2相ロックの説明に近く、2相コミットの説明ではありません。
イ: 2相コミットを行うためには,同時に更新しようとする分散データベースの全てが更新可能かどうかを判断するためのやり取りが必要である。
正しい。準備フェーズで全てのデータベースが更新可能か確認するためのやり取りが行われます。
ウ: 2相コミットを採用している場合,ロールバックは発生しない。
誤り。1つでもデータベースが更新不可能であれば、トランザクション全体がロールバックされます。
エ: 2相コミットを使えば,通信異常が発生しても,トランザクションをコミットさせることができる。
誤り。通信異常が発生した場合、トランザクションはロールバックされる可能性があります。
【答え】
イ: 2相コミットを行うためには,同時に更新しようとする分散データベースの全てが更新可能かどうかを判断するためのやり取りが必要である。
出典:平成29年度 春期 データベーススペシャリスト試験 午前II 問14