一つのトランザクションはトランザクションを開始した後,五つの状態(アクティブ,アボート処理中,アボート済,コミット処理中,コミット済)を取り得るものとする。
このとき,取ることのない状態遷移はどれか。
正答2
解説
正解は2です。
この問題は取ることのない遷移を選ぶので、○ が答え(起こらない遷移)です。
トランザクションは、アクティブ状態から始まり、最終的にコミット済かアボート済のどちらかに至ります。
コミット処理中に障害が起きた場合は、アボート処理中に移って取消しを行うことがあります。
一方、いったんアボート処理を始めたトランザクションが、コミットに向かうことはありません。
【選択肢別解説】
1:× アボート処理中から、取消しが完了してアボート済へ移るのは通常の遷移です。
2:○ アボート処理中からコミット処理中へは遷移しません。
アボートが決まったトランザクションは、更新を取り消してアボート済になるだけです。
3:× コミット処理中に障害などでコミットできなくなった場合は、アボート処理中に移って更新を取り消します。
起こり得る遷移です。
4:× コミット処理中から、処理が完了してコミット済へ移るのは通常の遷移です。
【ポイント】
トランザクションの原子性(Atomicity)により、結果は全て反映(コミット)か全て取消し(アボート)のどちらかになります。
「コミット処理中からアボート処理中へは移れるが、アボート処理中からコミット処理中へは移れない」と整理しておきましょう。
コミット済になった結果は取り消せないことも、あわせて押さえておきましょう。