トランザクションの仕組みを図にした。ACIDの4文字が指すもの
トランザクションは「全部やるか、全部やらないか」を保証する仕組みです。ACIDの各文字が何を指すのか、公式の用語集をもとに図で整理しました。

この記事の結論
- トランザクションは全部やるか、全部やらないかを保証する
- ACIDの4文字は、それぞれ別のことを保証している
- 分離性はロックで実現される。弱めると速くなるが見えてはいけないものが見える
- トランザクションは全部やるか、全部やらないかを保証する
- ACIDの4文字は、それぞれ別のことを保証している
- 分離性はロックで実現される。弱めると速くなるが見えてはいけないものが見える
「途中で止まったら、どうなるのか」。この問いに答えるのがトランザクションだ。ACIDという4文字の中身を図にした。
4つは別々のことを保証している
MySQLの公式用語集では、ACIDは原子性・一貫性・分離性・耐久性の頭文字で、いずれもデータベースに望ましい性質であり、トランザクションという概念と密接に関連するとされている。

A:原子性
公式の説明では、トランザクションは原子的な作業単位であり、確定(コミット)するか取り消す(ロールバック)かのどちらかになる。複数の変更を含む場合、確定時にすべてが成功するか、取り消し時にすべてが元に戻るかのいずれかになる。
図の例で言えば、Aから引いた後に止まっても、引いた処理ごと取り消される。「片方だけ実行された」状態は残らない。
C:一貫性
データベースは常につじつまの合った状態を保つ、という保証だ。確定や取り消しの後だけでなく、処理の最中も一貫性が保たれるとされている。
公式の記述で分かりやすいのがここだ。関連するデータが複数の表にまたがって更新される場合、問い合わせはすべて古い値か、すべて新しい値のどちらかを見る。古い値と新しい値が混ざって見えることはない。
I:分離性
進行中の処理どうしは互いに干渉できず、確定していないデータを互いに見ることができない。
実現の手段も書かれている。この分離はロックによって実現される。そして重要な但し書きがある。
経験のある利用者は分離レベルを調整して、保護を減らすことで性能と並行性を向上させることができる。
つまり分離性は強さを変えられる。弱めれば同時に動ける数は増えるが、見えてはいけないものが見える余地も増える。性能のために緩めるときは、何を許容するかを決めることになる。
D:耐久性
確定した結果は永続する。公式の説明では、確定操作が成功すれば、その変更は電源障害、システムクラッシュ、競合状態などから保護される。
実現には通常ディスクへの書き込みが関わり、書き込みの最中の障害に備えた冗長性が含まれるとされている。
ここが「確定したはずなのに消えた」が起きてはいけない根拠になる。確定の応答が返った時点で、残ることが保証されている。
どこで効いてくるか
複数の表を更新する処理では、ほぼ必ず関わる。
- 記事を保存して、同時にタグの対応も更新する
- 在庫を減らして、注文を記録する
- データを移しながら、古いほうを消す
どれも片方だけ成功した状態が最も困る。原子性があれば、その状態にならない。
移行作業のとき
データを一括で書き換える作業では、途中で止まる可能性を前提にする。まとめて1つの単位にするか、1件ずつ確定して再実行できる形にするかを先に決める。
再実行できる形にする場合、同じ処理を2回流しても結果が変わらないようにしておく必要がある。
まとめ
- A:全部成功するか、全部取り消すか
- C:古い値と新しい値が混ざって見えない
- I:確定していないデータは互いに見えない。ロックで実現する
- D:確定したら電源断やクラッシュからも保護される
- 分離性は強さを変えられる。緩めると速くなるが、見えるものが増える
- 一括の書き換えでは、まとめるか、再実行できる形にするかを先に決める
出典
- MySQL 8.4 Reference Manual「Glossary: ACID」(4つの性質の定義、ロックによる分離、分離レベルの調整、耐久性の実現)
図は本記事のために作成したもの。保証の範囲は製品と設定で変わるので、使っている環境の文書を確認すること。本記事は2026年10月13日時点の内容に基づく。
新しい記事が出たら、ブラウザの通知でお知らせします。
メールアドレスの登録は要りません。いつでも止められます。
関連記事
RELATED
レガシー移行でAIが間違えた場所を、全部書き出した
うまくいった話より、どこで間違えたかのほうが役に立つはずなので記録しました。
インデックスの仕組みを図にした。列の並び順で効くかが決まる
インデックスは端から全部見るのをやめる仕組みです。複合インデックスは左端から連続した組み合わせしか使えません。公式の記述…
移行前の動きを記録しておかないと、直ったか分からない
「前はどうだったか」を誰も覚えていません。先に記録を取る方法を決めました。