ホーム > データベーススペシャリスト試験 > 2014年
データベーススペシャリスト試験 2014年 午前2 問12
図は, 分散システムにおける 2 相コミットプロトコルの正常処理の流れを表している。③の動作はどれか。

ア:アンロック実行指示
イ:コミット実行指示
ウ:コミット可否問合せ(正解)
エ:ログ取得指示
解説
2相コミットプロトコルの正常処理における③の動作【午前2 解説】
要点まとめ
- 結論:③の動作は「コミット可否問合せ」であり、参加者にコミットの準備状況を確認する段階です。
- 根拠:2相コミットは「準備フェーズ(可否問合せ)」と「コミットフェーズ(実行指示)」の2段階で構成され、③は準備フェーズの最後のメッセージ送信に該当します。
- 差がつくポイント:各段階の役割を正確に理解し、特に「可否問合せ」と「コミット実行指示」の違いを区別できることが重要です。
正解の理由
2相コミットプロトコルは、分散トランザクションの整合性を保つために「準備フェーズ」と「コミットフェーズ」の2段階で処理を行います。
③の段階は、システムA(コーディネータ)が参加者(システムB、システムC)に対して「コミットしてよいか?」と可否を問い合わせるフェーズです。
この問い合わせに対して参加者は「コミット可能」または「中止」の応答を返し、その結果に基づき最終的なコミットまたはロールバックが決定されます。
したがって、③の動作は「コミット可否問合せ」であり、選択肢の中ではウが正解です。
③の段階は、システムA(コーディネータ)が参加者(システムB、システムC)に対して「コミットしてよいか?」と可否を問い合わせるフェーズです。
この問い合わせに対して参加者は「コミット可能」または「中止」の応答を返し、その結果に基づき最終的なコミットまたはロールバックが決定されます。
したがって、③の動作は「コミット可否問合せ」であり、選択肢の中ではウが正解です。
よくある誤解
「③はコミット実行指示」と誤解しやすいですが、実際にはコミットの可否を確認する段階であり、実行指示はその後の④段階で行われます。
解法ステップ
- 2相コミットプロトコルの基本構造を理解する(準備フェーズとコミットフェーズ)。
- 図のメッセージ交換の流れを時系列で追い、各段階の役割を把握する。
- ③の段階はコーディネータから参加者への問い合わせであることを確認する。
- 問い合わせ内容が「コミット可否の確認」であることを判断する。
- 選択肢の意味と照らし合わせて正解を選ぶ。
選択肢別の誤答解説
- ア: アンロック実行指示
→ アンロックはトランザクション終了後の処理であり、③の段階では行いません。 - イ: コミット実行指示
→ コミット実行指示は準備フェーズの後、全参加者がコミット可能と応答した後の④段階で送信されます。 - ウ: コミット可否問合せ
→ 正解。③の段階でコーディネータが参加者にコミット可能かどうかを問い合わせます。 - エ: ログ取得指示
→ ログ取得は障害回復のための処理であり、正常処理の流れの③段階では該当しません。
補足コラム
2相コミットプロトコルは分散トランザクションの整合性を保証する代表的な手法です。
準備フェーズで全参加者の同意を得ることで、途中での不整合を防ぎます。
ただし、コーディネータの障害時に処理が停止する「ブロッキング問題」があるため、3相コミットなどの改良版も存在します。
準備フェーズで全参加者の同意を得ることで、途中での不整合を防ぎます。
ただし、コーディネータの障害時に処理が停止する「ブロッキング問題」があるため、3相コミットなどの改良版も存在します。
FAQ
Q: 2相コミットプロトコルで「準備フェーズ」とは何ですか?
A: 参加者にコミット可能かどうかを問い合わせ、全員の同意を得る段階です。
A: 参加者にコミット可能かどうかを問い合わせ、全員の同意を得る段階です。
Q: ③の段階で参加者が「中止」を返した場合はどうなりますか?
A: コーディネータはコミットを中止し、ロールバック処理を指示します。
A: コーディネータはコミットを中止し、ロールバック処理を指示します。
関連キーワード: 2相コミットプロトコル, 分散トランザクション, コミット可否問合せ, トランザクション整合性, 分散システム