IPA過去問ドリル

平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13

テクノロジ/データベース

2相コミットで分散トランザクションの原子性を保証する場合,ネットワーク障害の発生によって参加者のトランザクションが,コミットすべきかロールバックすべきかを判断できなくなることがある。このような状況を発生させるネットワーク障害に関する説明として,適切なものはどれか。

出典:平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13

正解:イ

解説

2相コミットでは,まず調停者(コーディネータ)が各参加者に対してコミット又はロールバックの可否を問い合わせ(第1相),各参加者はロック等の準備を整えた上でその可否を応答する。調停者は全ての参加者から準備完了(コミット可)の応答を受け取ると,コミットの決定を行い,各参加者にその決定(コミット又はロールバック)を送信する(第2相)。この決定を受け取った参加者は,その内容に従ってコミット又はロールバックを実行する。もし,参加者が既にコミット可の応答を返して準備完了の状態(ロックを保持したまま,決定待ちの状態)にあるにもかかわらず,調停者がその決定を参加者に送信する直前にネットワーク障害などで機能しなくなると,参加者は,調停者が最終的にコミットを決定したのかロールバックを決定したのかを知るすべがなくなり,自らの判断でどちらか一方に決めることもできない(他の参加者と矛盾しない決定を独自に下せない)“判断不能(in-doubt)”の状態に陥る。

選択肢ごとの解説

  • 誤り。調停者が可否の問合せを送る前に障害になった場合,どの参加者もまだ準備(ロックの確保など)を済ませていないため,参加者側は問題なく処理を中断(ロールバック)でき,判断不能の状態には陥らない。
  • 正しい。参加者が既に準備完了(コミット可)の応答を返し,調停者からの最終決定を待っている状態で調停者が障害になると,参加者はコミットすべきかロールバックすべきかを判断する手掛かりを失い,判断不能の状態に陥る。
  • 誤り。参加者がまだ可否の応答を調停者に返していない段階で障害が起きても,参加者自身がまだ最終的な応答(コミット可)を確定させていないため,参加者は自らの判断で処理を中断(ロールバック)でき,判断不能の状態には陥らない。
  • 誤り。参加者が既に決定(コミット又はロールバック)を受け取り,その完了を調停者に返す直前に障害が起きた場合,参加者自身は既にどちらを実行すべきかを把握して処理を完了させているため,参加者側が判断に迷うことはない。
データベーススペシャリストの過去問を演習モードで解く