令和元年秋期試験問題 午前問30

分散トランザクション管理において,複数サイトのデータベースを更新する場合に用いられる2相コミットプロトコルに関する記述のうち,適切なものはどれか。

  • 主サイトが一部の従サイトからのコミット準備完了メッセージを受け取っていない場合,コミット準備が完了した従サイトに対してだけコミット要求を発行する。
  • 主サイトが一部の従サイトからのコミット準備完了メッセージを受け取っていない場合,全ての従サイトに対して再度コミット準備要求を発行する。
  • 主サイトが全ての従サイトからコミット準備完了メッセージを受け取った場合,全ての従サイトに対してコミット要求を発行する。
  • 主サイトが全ての従サイトに対してコミット準備要求を発行した場合,従サイトは,コミット準備が完了したときだけ応答メッセージを返す。
正解 問題へ
分野:テクノロジ系
中分類:データベース
小分類:トランザクション処理
解説
2相コミットプロトコルは、トランザクションを他のサイトに更新可能かどうかを確認する第1相と、更新を確定する第2相の2つのフェーズに分け、各サイトのトランザクションをコミットもロールバックも可能な中間状態(セキュア状態)にした後、全サイトがコミットできる場合だけトランザクションをコミットするという方法で分散データベース環境でのトランザクションの原子性・一貫性を保証する手法です。

具体的には、各サイトの更新処理が終わった後に、コミットの調整を行う1つのノードを「主サイト」、ネットワーク上の他のノードを「従サイト」として、次の手順でコミットが行われます。

[第1相(投票層)]
  1. 主サイトはネットワーク上の全ての従サイトにコミットの可否を問い合わせる。
  2. 全ての従サイトは主サイトにコミットの可否を応答する。
[第2相(決定相)]
  1. 全ての従サイトからコミットの合意を得られた場合は、全ての従サイトにコミットの実行要求を発行する。コミットの停止を応答した従サイトがあった場合、またはタイムアウトとなった場合は、全ての従サイトにロールバックの実行要求を発行する。
  2. 全ての従サイトは、コミット(またはロールバック)の完了とともに主サイトに処理完了のメッセージを送る。
  3. 主サイトが、全ての従サイトからの処理完了メッセージを受け取り、トランザクションの完了となる。
30.png
  • 第1相で一部の従サイトから応答が得られないまま一定時間が経過した場合、主サイトはトランザクションを中止します。コミット準備完了メッセージを受け取った一部の従サイトだけにコミット要求を出すと、サイトごとにコミットされたりロークバックされたりといったことが起こり、トランザクションの一貫性が保てません。
  • 全ての従サイトからコミット準備完了メッセージを得られなかった場合には、主サイトはトランザクションを中止しなければなりません。このケースでは、トランザクションはアボート処理され、再度トランザクションの発行からやり直しになります。
  • 正しい。全ての従サイトからコミット可能というメッセージを受け取ったときのみ、主サイトは全ての従サイトにコミット要求を発行します。
  • 各従サイトは、コミットできるときにはコミット可(Yes)、できない状態のときにはコミット不可(No)を、主サイトに対して返します。

Pagetop