この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は イ

解説

トランザクションの状態遷移に関する問題です。トランザクションは開始後、アクティブ(実行中)の状態から、正常に完了する場合はコミット処理中を経てコミット済へ、異常終了する場合はアボート処理中を経てアボート済へと遷移します。重要な原則は「アボート(取消し)の処理を始めたトランザクションは、もはやコミット(確定)に向かうことはできない」ということです。アボート処理中とは更新の取消し(ロールバック)を実行している状態であり、ここからコミット処理中へ遷移することはあり得ません。したがってイが正解(取ることのない遷移)です。一方、コミット処理中からアボート処理中への遷移(ウ)はあり得る点に注意が必要です。コミット処理の途中でディスク障害などが発生してコミットを完遂できない場合、トランザクションはアボートに切り替わって取り消されます。コミットが確定する(コミット済になる)まではアボートの可能性が残る、という一方向の関係を正確に理解しているかが本問の核心です。

なぜ他の選択肢は違うのか

選択肢 ア
アボート処理中からアボート済への遷移は、更新の取消し(ロールバック)処理が完了して異常終了が確定する正常な流れであり、当然起こり得る遷移です。アボート処理中はロールバックの実行中、アボート済はその完了後の最終状態という関係です。「取ることのない遷移」を問われているので、この自然な遷移は該当しません。
選択肢 ウ
コミット処理中からアボート処理中への遷移は起こり得ます。コミット処理の途中でログの書き込み失敗やディスク障害などが発生し、コミットを完遂できないと判明した場合、トランザクションはアボートに切り替えられ、それまでの更新が取り消されます。「コミットを始めたら必ず成功する」とは限らない点が、本問で最も誤解されやすいポイントです。
選択肢 エ
コミット処理中からコミット済への遷移は、コミット処理(更新内容の確定・ログへの書き込みなど)が正常に完了したときの最も基本的な流れであり、当然起こり得る遷移です。コミット済は更新が永続化された最終状態で、ここから他の状態に戻ることはありません。最終状態(コミット済・アボート済)からの遷移がないことも併せて覚えておきましょう。

解くときのポイント

トランザクション状態遷移の原則: アボートに向かい始めたらコミットには戻れない(逆は起こり得る)。コミット済・アボート済は最終状態で遷移なし。「アボート処理中→コミット処理中」だけがあり得ない。