情報処理試験を勉強していると、「ACID特性って4つあるけど、どれがどれだっけ?」と混乱しがちです。この記事では、4つの性質をそれぞれ日常の例え話で整理し、試験で確実に得点できる状態を目指します。
対象試験と出題頻度
ACID特性は、基本情報技術者・応用情報技術者で繰り返し出題されるデータベースの最重要テーマです。
トランザクション処理の根幹にあたる概念であり、4つの性質の定義を正確に区別できるかが直接問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★★★
ランクS(超重要)絶対に覚える必要あり
用語の定義
ACID特性とは、一言で言うと
「データベースのトランザクション処理が満たすべき4つの性質(原子性・一貫性・隔離性・耐久性)の総称」
のことです。
イメージとしては、「銀行ATMの振込処理を安全に完了させるための4つの約束事」です。
ATMでAさんからBさんに1万円を振り込むとき、「Aの口座から引いたのにBに加算されなかった」は許されません。
途中で停電が起きても、処理がうやむやにならず、確実に「全部やる」か「全部やらない」かのどちらかになる。こうした約束を体系的にまとめたのがACID特性です。
ACID特性の基本情報
| 項目 | 内容 |
|---|---|
| 正式名称 | ACID Properties(Atomicity, Consistency, Isolation, Durability) |
| 分野 | データベース > トランザクション処理 |
| 提唱 | 1983年 Andreas Reuter と Theo Härder が論文で定義 |
| 保証する主体 | DBMS(データベース管理システム) |
解説
データベースでは、「口座Aから出金→口座Bに入金」のように、関連する複数の操作をひとまとまりで扱う必要があります。この「ひとまとまりの処理単位」がトランザクションです。
もしトランザクションに何のルールも設けなければ、処理の途中で障害が起きたときにデータが中途半端な状態で残ったり、同時に走った別の処理と干渉して数値がズレたりします。
こうした事故を防ぐために、DBMSが保証すべき4つの性質として定式化されたのがACID特性です。
4つの性質を一覧で整理
ACIDはそれぞれの英語の頭文字を取った略語です。ここだけは確実に押さえてください。
| 頭文字 | 性質名 | 意味 | 日常の例え |
|---|---|---|---|
| A | 原子性 (Atomicity) |
トランザクション内の処理がすべて実行されるか、まったく実行されないかのどちらかで終わる | 振込は「出金+入金」がセット。片方だけ実行されることはない |
| C | 一貫性 (Consistency) |
トランザクションの前後でデータベースの整合性が保たれる | 振込の前後で「全口座の残高合計」は変わらない |
| I | 隔離性 (Isolation) |
複数のトランザクションを同時に実行しても、順番に実行した場合と同じ結果になる | ATMを2台同時に使っても、それぞれの処理が互いに干渉しない |
| D | 耐久性 (Durability) |
正常終了(コミット)したトランザクションの結果は、その後に障害が発生しても失われない | 振込完了の通知が出た後に停電しても、処理結果は消えない |
図解:ACID特性の全体像
4つの性質がトランザクションをどの角度から守っているかを図で確認します。
ACID特性はトランザクションの「どの場面」を守るか?
処理実行中(UPDATE / INSERT / DELETE …)
A 原子性(Atomicity)が守る場面
処理の途中で障害やエラーが発生した場合、変更をすべて取り消して開始前の状態に戻す(ロールバック)。「一部だけ実行された」という中途半端な状態を許さない。
実現手段:COMMIT / ROLLBACK
I 隔離性(Isolation)が守る場面
複数のトランザクションが同時に走っていても、お互いの処理途中のデータを見たり書き換えたりしない。1つずつ順番に実行した場合と同じ結果になることを保証する。
実現手段:ロック機構(共有ロック・専有ロック)/ スケジューリング
C 一貫性(Consistency)が守る場面
COMMIT の前後で、データベースに設定された整合性制約(「残高≧0」などのルール)が壊れないことを保証する。制約に違反する操作はDBMSが拒否する。
実現手段:データ型制約 / 参照整合性制約 / CHECK制約
D 耐久性(Durability)が守る場面
COMMIT済みのトランザクション結果は、その後にどんなシステム障害が起きても失われない。ログを使って障害前の確定状態を復元する。
実現手段:トランザクションログ(ジャーナル)/ ロールフォワード
▲ トランザクションの流れに沿って、4つの性質が「いつ・何を守るか」を示したフロー図
各性質の仕組みと実現手段
それぞれの性質をDBMSがどのように実現しているかを簡潔に整理します。
A:原子性(Atomicity)の詳細を見る
原子性は「トランザクションは分割できない最小単位である」という性質です。処理が途中で失敗した場合、DBMSはロールバック(ROLLBACK)によって変更をすべて取り消し、開始前の状態に戻します。処理がすべて正常に完了した場合はコミット(COMMIT)で確定します。
原子性のおかげで、「出金だけ処理されて入金は反映されない」といった中途半端な状態が発生しません。
C:一貫性(Consistency)の詳細を見る
一貫性は「トランザクションの実行前後でデータベースの整合性制約が維持される」という性質です。例えば「残高は0以上」という制約がある場合、残高をマイナスにするような処理はDBMSによって拒否されます。
データ型の制約、参照整合性制約、CHECK制約などがこの性質を支えています。
I:隔離性(Isolation)の詳細を見る
隔離性(独立性とも呼ぶ)は「同時に実行された複数のトランザクションが互いに影響を与えない」という性質です。これを実現するためにDBMSは排他制御(ロック機構やスケジューリング)を用います。
隔離性が保たれない場合、ダーティリード(未確定データの読み取り)やロストアップデート(更新の消失)といった異常が発生します。
D:耐久性(Durability)の詳細を見る
耐久性(永続性とも呼ぶ)は「コミット済みのトランザクション結果は、以後どんなシステム障害が起きても消失しない」という性質です。DBMSはトランザクションログ(ジャーナル)を使ってこの性質を確保します。
障害発生時にはログをもとにロールフォワード(前進復帰)を実行し、コミット済みの変更を復元します。
図解:振込処理とACID特性の対応
「口座Aから口座Bへ1万円を振り込む」という処理に、4つの性質がどう関わるかを具体的に示します。
振込トランザクションとACID特性
A 原子性
出金と入金は必ずセットで成功 or セットで取消
C 一貫性
A+Bの残高合計は振込前後で変わらない
I 隔離性
同時に別の振込が走っても結果に干渉しない
D 耐久性
COMMIT後に停電しても振込結果は消えない
ACID特性と実現手段の対応
各性質を実現するDBMSの仕組みを対応表で整理します。試験ではここまででOKです。
| 性質 | 別名 | 実現手段 |
|---|---|---|
| 原子性 | — | コミット/ロールバック |
| 一貫性 | 整合性 | データ型制約、参照整合性制約、CHECK制約 |
| 隔離性 | 独立性 | ロック機構(共有ロック・専有ロック)、スケジューリング |
| 耐久性 | 永続性 | トランザクションログ(ジャーナル)、ロールフォワード |
では、この用語が試験でどのように出題されるか見ていきましょう。
ACID特性の核心を3行で
・A(原子性)=全部やるか全部やらないか。コミットとロールバックで実現
・C(一貫性)=整合性を壊さない。I(隔離性)=同時実行でも干渉しない
・D(耐久性)=確定後は障害が起きても結果が消えない。ログで実現
試験ではこう出る!
ACID特性は、FE・APの午前問題で繰り返し出題されている定番テーマです。出題パターンは大きく2つに分かれます。
過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE R5 科目A 問7 |
「更新処理を完全に行うか、全く処理しなかったかのように取り消す」特性を選ぶ問題 | 正解は原子性(atomicity)。一貫性・耐久性・独立性がひっかけ |
| AP R4秋 午前 問30 |
「ACID特性に含まれないものはどれか」を選ぶ問題 | 正解は可用性。一貫性・原子性・耐久性はACIDに含まれる |
| AP H31春 午前 問30 |
一貫性(consistency)の記述として適切なものを選ぶ問題 | 「整合性の取れたDBに対し、実行後も整合性が取れている」が正解 |
| AP H24春 午前 問30 |
原子性の説明として正しいものを選ぶ問題 | FE R5 問7と同一構成の問題(FEとAPで流用される典型) |
| FE R3免除 問28 |
原子性(atomicity)を説明したものを選ぶ問題 | AP H27春 問30と同一。べき等性の記述がひっかけとして登場 |
IPA試験での出題パターン
パターン1:「○○の性質を説明したものを選べ」
4つの性質の説明文が並び、問題文で指定された1つに該当するものを選ぶ形式。最も多い出題は「原子性」。ひっかけとして耐久性や独立性の説明が紛れ込む。「すべて実行されるか、全く実行されない」が原子性のキーワード。
パターン2:「ACID特性に含まれないものを選べ」
AP R4秋のように、4つの選択肢の中にACID特性ではないものを1つ混ぜて選ばせる形式。「可用性」がひっかけの定番。可用性は情報セキュリティの三要素(CIA)の一つであり、ACID特性には含まれない。
「隔離性」と「独立性」は同じもの(Isolation)の訳語違いです。選択肢に両方が登場することはないため、どちらの表記でも対応できるようにしておけば十分です。深追いは不要です。
【確認テスト】ACID特性の理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. データベースのトランザクション処理における「ACID特性」に含まれないものはどれでしょうか?
- A. 原子性(Atomicity)── トランザクション内の処理がすべて実行されるか、まったく実行されないかを保証する性質
- B. 可用性(Availability)── システムが必要なときに利用可能な状態を維持する性質
- C. 耐久性(Durability)── コミット済みのトランザクション結果が障害後も失われないことを保証する性質
正解と解説を見る
正解:B
解説:
可用性(Availability)は情報セキュリティの三要素(CIA:機密性・完全性・可用性)に含まれる概念であり、ACID特性には含まれません。AP R4秋 午前 問30でもまさにこの点が出題されています。
選択肢Aの原子性はACID特性の「A」にあたる性質で、コミットとロールバックによって実現されます。選択肢Cの耐久性はACID特性の「D」にあたる性質で、トランザクションログ(ジャーナル)によって実現されます。いずれもACID特性を構成する正当な要素です。
よくある質問(FAQ)
Q. ACID特性の「隔離性」と「独立性」は別の概念ですか?
同じ概念です。どちらもIsolationの和訳であり、教科書や試験問題によって表記が異なるだけです。IPAの過去問では「独立性」「隔離性」の両方が登場実績があるため、どちらが出ても同じIsolationを指していると判断してください。
Q. ACID特性とBASE特性はどう違いますか?
ACID特性はリレーショナルデータベース(RDB)のトランザクション処理が守る「厳密な整合性優先」の設計思想です。一方、BASE特性(Basically Available, Soft state, Eventually consistent)はNoSQLなど分散システムで使われる「可用性と性能優先・結果整合性で妥協する」設計思想です。AWSの公式ドキュメントでも両者の違いが解説されています。IPA試験ではBASE特性が直接問われることはほぼないため、「対比概念が存在する」程度の認識で十分です。
Q. 「可用性」と「耐久性」を混同しそうです。見分け方はありますか?
可用性(Availability)は「システムが使いたいときに使える」というシステム全体の稼働に関する話です。耐久性(Durability)は「コミット済みのデータが障害後も消えない」というトランザクション結果の保存に関する話です。主語が「システム全体の稼働」か「確定済みデータの保存」かで区別するとスッキリ整理できます。
Q. ACID特性はアプリケーション側で保証するものですか、それともDBMS側ですか?
原則としてDBMSが提供する機能で保証されます。ただし一貫性(Consistency)だけはやや特殊で、「どのような整合性制約を設けるか」はアプリケーション設計者やDB設計者がCREATE TABLE時に定義する必要があります。制約の定義はアプリケーション側、制約の遵守はDBMS側、という役割分担です。