最終更新日:2026年7月25日
fe fe-technology database
まず結論
ACID特性とは、データベースのトランザクション処理を安全に行うための4つの性質です。
基本情報技術者試験では、次のように切り分けると判断しやすくなります。
| 性質 | 英語 | 判断の合図 |
|---|---|---|
| 原子性 | Atomicity | 全部実行するか、全く実行しない |
| 一貫性 | Consistency | データの矛盾を残さない |
| 独立性 | Isolation | 同時に実行しても互いに影響しない |
| 耐久性 | Durability | 確定した結果が失われない |
FE試験では、完全に行うか、全く処理しなかったように取り消す とあれば、原子性を選びます。
直感的な説明
ACID特性は、銀行振込の処理で考えると分かりやすいです。
例えば、AさんからBさんへ1万円を振り込む処理を考えます。
このとき、データベースでは少なくとも次のような更新が必要です。
1. Aさんの残高を1万円減らす
2. Bさんの残高を1万円増やす
ここで大事なのは、単に「処理が動くこと」ではありません。
正しく、安全に終わることです。
原子性:途中で止まった状態を残さない
Aさんの残高だけ減って、Bさんの残高が増えないと困ります。
そのため、振込処理は、
全部成功する
または
全部取り消す
のどちらかで終わる必要があります。
これが 原子性 です。
一貫性:データのルールを崩さない
振込の前後で、データベースのルールが崩れてはいけません。
例えば、
口座残高がマイナスにならない
口座番号が存在する
入出金の合計が不自然にずれない
といったルールを守る必要があります。
このように、処理の前後でデータの整合性を保つ性質が 一貫性 です。
独立性:同時に処理しても結果がおかしくならない
同じ口座に対して、ATM、ネットバンキング、窓口処理が同時に動くことがあります。
そのとき、処理が互いに割り込んで、残高計算がずれてはいけません。
同時に実行しても、順番に処理した場合と同じ結果になるようにする性質が 独立性 です。
耐久性:確定した結果を失わない
振込が完了し、コミットされたあとにシステム障害が起きたとします。
それでも、確定した振込結果は失われてはいけません。
このように、正常終了した処理結果を障害後も残す性質が 耐久性 です。
ACID特性は、4つを別々に丸暗記するより、
1つの振込処理を安全に終わらせるための条件 として見ると覚えやすいです。
定義・仕組み
トランザクションとは、データベースに対する一連の処理を、ひとまとまりの単位として扱う考え方です。
例えば、振込処理では「出金」と「入金」を別々の処理としてではなく、1つのトランザクションとして扱います。
トランザクション開始
Aさんの残高を減らす
Bさんの残高を増やす
コミット
すべての処理を確定することを コミット といいます。
途中で問題が起きたときに、処理前の状態へ戻すことを ロールバック といいます。
成功した場合:コミットして確定
失敗した場合:ロールバックして取り消し
ACID特性は、このトランザクションを安全に扱うための基本的な性質です。
| 性質 | 何を守る? | 例 |
|---|---|---|
| 原子性 | 処理を中途半端に残さない | 出金だけ成功した状態を残さない |
| 一貫性 | データのルールを守る | 残高や口座情報に矛盾を残さない |
| 独立性 | 同時実行の影響を防ぐ | 複数の振込が同時でも残高を正しく扱う |
| 耐久性 | 確定結果を失わない | コミット後の振込結果を障害後も残す |
このテーマは、基本情報技術者試験の「データベース」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、ACID特性の説明文から、どの性質かを選ぶ問題が出やすいです。
特に、次の対応を押さえると選択肢を切りやすくなります。
| 問題文の表現 | 選ぶ性質 |
|---|---|
| 完全に行う、または全く行わない | 原子性 |
| 途中まで実行された状態を残さない | 原子性 |
| データの矛盾が生じない | 一貫性 |
| 整合性が保たれる | 一貫性 |
| 同時に実行しても結果が等しい | 独立性 |
| 順番に実行した場合と同じ結果になる | 独立性 |
| 障害が発生しても確定結果が失われない | 耐久性 |
| コミット後の結果を保持する | 耐久性 |
FE試験の選択肢では、
更新処理を完全に行うか、
全く処理しなかったかのように取り消す
とあります。
これは、処理を中途半端に残さない性質です。
したがって、判断すべき性質は 原子性 です。
どんな場面で使う?
問題文では、ACID特性の名前を直接選ぶよりも、トランザクション処理の流れを読ませる形で出ることがあります。
見るポイントは、次の3つです。
1. どこからどこまでが1つの処理か
2. 失敗したときにロールバックするか
3. 成功したあとにコミットするか
例えば、次のような処理を考えます。
トランザクション開始
在庫数を減らす
注文履歴を追加する
請求情報を登録する
コミット
途中で請求情報の登録に失敗した場合、在庫数だけ減った状態を残すと困ります。
この場合は、在庫数の更新や注文履歴の追加も含めて、処理全体を取り消す必要があります。
途中で失敗
→ ロールバック
→ 処理前の状態に戻す
この読み方は、原子性の理解とつながります。
また、同じ商品に複数の注文が同時に入る場合は、在庫数の更新が互いにずれないようにする必要があります。
これは独立性の考え方と関係します。
問題文では、用語名を覚えるだけでなく、 処理の途中で何が確定し、何が取り消されるか を追うことが大切です。
よくある誤解・混同
誤解1:原子性と一貫性を同じだと思ってしまう
原子性は、処理を 全部やるか、全部やらないか です。
一貫性は、処理の前後で データのルールや整合性を崩さない ことです。
| 性質 | 見るポイント |
|---|---|
| 原子性 | 中途半端に処理が残っていないか |
| 一貫性 | データに矛盾が残っていないか |
FE試験で「完全に行う」「全く処理しなかったように取り消す」とあれば、原子性です。
誤解2:独立性を「別々のシステムで動くこと」と考える
独立性は、システムが別々という意味ではありません。
複数のトランザクションを同時に実行しても、互いに悪い影響を与えない性質です。
同時実行しても
順番に実行した場合と同じ結果になる
という表現が出たら、独立性を考えます。
誤解3:耐久性をバックアップ全般の話と広く考えすぎる
耐久性は、バックアップ全般を指す言葉ではありません。
ポイントは、コミットされた結果が失われないことです。
障害、停電、システム停止などが出てきても、確定済みの更新結果を保持する話であれば、耐久性です。
誤解4:ACIDの順番だけ覚えて満足してしまう
ACIDは、頭文字の順番を覚えるだけでは試験で迷います。
基本情報技術者試験では、説明文から性質を選ぶことが多いので、次の合図で切り分けます。
全部 or なし → 原子性
矛盾しない → 一貫性
同時実行でも安全 → 独立性
確定後に消えない → 耐久性
まとめ(試験直前用)
- ACID特性は、トランザクション処理を安全に行うための4つの性質
- 全部実行するか、全く実行しない は原子性
- データの矛盾を残さない は一貫性
- 同時実行しても互いに影響しない は独立性
- コミット後の結果が失われない は耐久性