令和6年秋期試験問題 午前問27

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

  • 調停者のトランザクションが,コミット又はロールバック可否の問合せを参加者に送る直前に障害になった。
  • 調停者のトランザクションが,コミット又はロールバックの決定を参加者に送る直前に障害になった。
  • 調停者のトランザクションに,コミット又はロールバック可否の応答を参加者が返す直前に障害になった。
  • 調停者のトランザクションに,コミット又はロールバックの完了を参加者が返す直前に障害になった。
正解 問題へ
分野 :テクノロジ系
中分類:データベース
小分類:トランザクション処理
解説
2相コミットは、分散データベース環境でのトランザクションの原子性・一貫性を確保するために、トランザクションのコミットについて、①各サイトに対して更新可能かを問い合わせるフェーズ(第1相)と、②全サイトの合意が得られた後に変更を確定するフェーズ(第2相)の2つの段階に分けて実行する手法です。本問でいえば、コミットまたはロールバックについて「可否の問合せを参加者に送る」のが第1相、「決定を参加者に送る」のが第2層の動作に相当します。
27_1.png
2相コミットでは、調停者にコミットの可否を応答した参加者は、いつでもコミットまたはロールバックが可能なセキュア状態(中間状態)に遷移します。この際、参加者は調停者からの指示を受け取るまで待ち状態となります。そのため、調停者が各サブトランザクションからの応答を受けとった後、行うべきアクションを各サイトに通知する前(第2相の開始時)に障害が発生すると、待ち状態の参加者はコミットすべきかロールバックすべきかを判断できない不定状態に陥ります。
27_2.png
  • 調停者またはネットワークが第1相の開始時に障害でダウンした場合、各参加者はタイムアウトとみなしてロールバックを行います。
  • 正しい。セキュア状態で調停者からの通知がない場合、参加者はコミットすべきかロールバックすべきか判断することができません。他のサイトではコミットまたはロールバックの通知を受けて、正常に処理している可能性があり、原子性・一貫性の観点から安易にどちらの処理も行うことができないためです。
  • 一定時間内に各参加者からの可否の応答がない場合、調停者はタイムアウトとみなしてトランザクションを中止します。この際、ロールバック命令が全ての副サイトに通知されるため、参加者が判断に困ることはありません。
  • 本肢の障害が発生するのは、各参加者が調停者からコミットまたはロールバックの指示を受け取り、その処理を完了した後です。すでにどちらのアクションを行うべきか決定しているため、判断に困ることはありません。復旧後に指示どおり再実行すれば済みます。

Pagetop