平成21年度 秋期 応用情報技術者試験 午前 問31
テクノロジ/データベース分散トランザクション処理で利用される2相コミットプロトコルでは,コミット処理を開始する調停者(coordinator)と,調停者からの指示を受信してから必要なアクションを開始する参加者(participant)がいる。この2相コミットプロトコルに関する記述のうち,適切なものはどれか。
出典:平成21年度 秋期 応用情報技術者試験 午前 問31
- ア参加者は,フェーズ1で調停者にコミット了承の応答を返してしまえば,フェーズ2のコミット要求を受信していなくても,ローカルにコミット処理が進められる。
- イ調停者に障害が発生するタイミングによっては,その回復処理が終わらない限り,参加者全員がコミットもロールバックも行えない事態が起こる。
- ウ一つの分散トランザクションに複数の調停者及び参加者が存在し得る。例えば,5個のシステム(プログラム)が関与している場合,調停者の数が2,参加者の数が3となり得る。
- エフェーズ1で返答のない参加者が存在しても,調停者は強制的にそのトランザクションをコミットすることができる。
正解:イ
解説
2相コミットプロトコルでは,調停者に障害が発生してその回復処理が完了しない限り,フェーズ1でコミット了承の応答をした参加者は,調停者からのフェーズ2の指示(コミットかロールバックか)を受け取れず,コミットもロールバックも行えない不確定状態に陥ることがあります。これはブロッキング問題として知られています。
選択肢ごとの解説
- ア誤り。参加者はフェーズ1でコミット了承(コミット可能)の応答をした後は,フェーズ2の指示を受けるまで独断でローカルにコミットすることはできません。
- イ正しい。調停者に障害が起きて回復が完了しない間,参加者はコミットもロールバックも行えないブロッキング状態に陥ることがあります。
- ウ誤り。2相コミットプロトコルでは通常,一つの分散トランザクションに調停者は一つだけであり,複数の調停者が同時に存在する構成は一般的ではありません。
- エ誤り。フェーズ1で応答のない参加者が存在する場合,調停者は安全のためトランザクション全体をロールバックするのが原則であり,強制的にコミットすることはできません。