最終更新日:2026年9月22日
fe fe-technology database
まず結論
トランザクションの状態遷移では、正常に確定する「コミット側」と、失敗して取り消す「アボート側」を分けて考えると理解しやすくなります。
成功
アクティブ → コミット処理中 → コミット済
│ │
│ 失敗 │ 失敗
↓ ↓
アボート処理中 ───────→ アボート済
基本情報技術者試験で特に重要なのは、次の判断です。
コミット処理中 → アボート処理中 :あり得る
アボート処理中 → コミット処理中 :通常は考えない
成功させようとして失敗し、取り消す側へ進むことはある。しかし、取り消し処理に入ったトランザクションが、そのままコミット側へ戻るわけではないと考えると、選択肢を切りやすくなります。
直感的な説明
銀行振込で考えてみます。
Aさんの残高を1万円減らす
Bさんの残高を1万円増やす
この一連の処理を1つのトランザクションとして扱います。すべて正常に終われば、結果を確定します。
処理中 → 正常終了 → コミット → 確定
一方、途中で障害などが起きれば、そのまま中途半端な状態を残してはいけません。
処理中 → 失敗 → アボート → 変更を取り消す
commit は「確定する方向」、abort は「中止して取り消す方向」とイメージすると分かりやすいです。
定義・仕組み
トランザクションとは、データベースに対する複数の処理を、ひとまとまりとして扱う単位です。
| 状態 | 意味 |
|---|---|
| アクティブ | トランザクションを実行している |
| コミット処理中 | 正常終了させ、結果を確定しようとしている |
| コミット済 | 結果の確定が完了した |
| アボート処理中 | トランザクションを中止し、取り消し処理をしている |
| アボート済 | 中止・取り消しが完了した |
アボート(abort)は、トランザクションを途中で中止することです。
アボート = トランザクションを中止する
ロールバック = 更新内容を取り消して以前の状態へ戻す
試験では厳密な内部実装よりも、正常終了する方向か、失敗して取り消す方向かを追うことが大切です。
この考え方は、ACID特性 の原子性ともつながります。「全部成功する、または全部取り消す」という原子性を、状態の変化として細かく見たものだと考えると理解しやすくなります。
科目Aでどう出る?
科目Aでは、複数の状態を示して「起こることのない状態遷移」を選ばせる形があります。
まず2本のルートに分けます。
【成功ルート】
アクティブ → コミット処理中 → コミット済
【失敗ルート】
アクティブ → アボート処理中 → アボート済
さらに、コミット処理中に問題が起これば、正常終了できないのでアボート側へ移ることがあります。
コミット処理中 → 失敗 → アボート処理中
しかし逆方向の「アボート処理中 → コミット処理中」は考えません。すでに「このトランザクションを中止する」と判断して取り消し処理へ進んでいるからです。
選択肢を切る判断基準
1. 今は成功側か、失敗側か
2. 矢印は処理の進行方向か
3. 失敗側から成功側へ戻ろうとしていないか
特に3番が、このタイプの問題で強い判断材料になります。
どんな場面で使う?
例えば注文処理を考えます。
在庫を減らす
↓
注文履歴を登録
↓
支払情報を登録
すべて成功すれば「アクティブ → コミット処理中 → コミット済」と進みます。途中で問題が起きれば、中途半端な更新を残さないため「アボート処理中 → アボート済」の方向へ進みます。
この流れが分かると、ACID特性の原子性も「全部成功か、全部取り消す」という処理の流れとして理解しやすくなります。
よくある誤解・混同
誤解1:アボートとロールバックは全く同じ言葉
密接に関係しますが、見るポイントが少し違います。
アボート → トランザクションを中止する
ロールバック → 変更を取り消して戻す
FE試験では、アボートが出てきたらまず失敗・中止側の処理と判断します。
誤解2:コミット処理中なら必ずコミット済になる
コミットを進めている途中でも、正常に完了できなければアボート側へ進むことがあります。
コミット処理中
├─ 成功 → コミット済
└─ 失敗 → アボート処理中
誤解3:コミットとアボートは自由に行き来できる
自由には行き来しません。成功側から失敗側へ進むことは障害によって起こり得ますが、失敗側から成功側へそのまま戻るとは考えません。
誤解4:状態名を全部暗記しないと解けない
暗記よりも方向を見る方が有効です。
成功 → コミット
失敗 → アボート
まずこの2方向に分けてから矢印を追えば、初見の状態名が含まれていても判断しやすくなります。
まとめ(試験直前用)
- コミットは正常終了して結果を確定する方向
- アボートはトランザクションを中止して取り消す方向
- コミット処理中に失敗して、アボート処理中へ進むことはある
- アボート処理中からコミット処理中へ戻る遷移は考えない
- 状態遷移問題では「成功側か失敗側か」を先に見る
- ACID特性の原子性(全部成功か、全部取り消す)とつなげると理解しやすい