トランザクションの仕組みを図にした。ACIDの4文字が指すもの

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

この記事の結論

  1. トランザクションは全部やるか、全部やらないかを保証する
  2. ACIDの4文字は、それぞれ別のことを保証している
  3. 分離性はロックで実現される。弱めると速くなるが見えてはいけないものが見える
  • トランザクションは全部やるか、全部やらないかを保証する
  • ACIDの4文字は、それぞれ別のことを保証している
  • 分離性はロックで実現される。弱めると速くなるが見えてはいけないものが見える

「途中で止まったら、どうなるのか」。この問いに答えるのがトランザクションだ。ACIDという4文字の中身を図にした。

4つは別々のことを保証している

MySQLの公式用語集では、ACIDは原子性・一貫性・分離性・耐久性の頭文字で、いずれもデータベースに望ましい性質であり、トランザクションという概念と密接に関連するとされている。

ACIDの4つの性質を並べ、口座の振り替えを例に途中で止まった場合に取り消される流れを示した図
図1:4文字はそれぞれ別の保証。下は振り替えの例で、途中で止まった場合に何が起きるか。
SPONSORED

A:原子性

公式の説明では、トランザクションは原子的な作業単位であり、確定(コミット)するか取り消す(ロールバック)かのどちらかになる。複数の変更を含む場合、確定時にすべてが成功するか、取り消し時にすべてが元に戻るかのいずれかになる。

図の例で言えば、Aから引いた後に止まっても、引いた処理ごと取り消される。「片方だけ実行された」状態は残らない。

C:一貫性

データベースは常につじつまの合った状態を保つ、という保証だ。確定や取り消しの後だけでなく、処理の最中も一貫性が保たれるとされている。

公式の記述で分かりやすいのがここだ。関連するデータが複数の表にまたがって更新される場合、問い合わせはすべて古い値か、すべて新しい値のどちらかを見る。古い値と新しい値が混ざって見えることはない。

I:分離性

進行中の処理どうしは互いに干渉できず、確定していないデータを互いに見ることができない。

実現の手段も書かれている。この分離はロックによって実現される。そして重要な但し書きがある。

経験のある利用者は分離レベルを調整して、保護を減らすことで性能と並行性を向上させることができる。

つまり分離性は強さを変えられる。弱めれば同時に動ける数は増えるが、見えてはいけないものが見える余地も増える。性能のために緩めるときは、何を許容するかを決めることになる。

D:耐久性

確定した結果は永続する。公式の説明では、確定操作が成功すれば、その変更は電源障害、システムクラッシュ、競合状態などから保護される。

実現には通常ディスクへの書き込みが関わり、書き込みの最中の障害に備えた冗長性が含まれるとされている。

ここが「確定したはずなのに消えた」が起きてはいけない根拠になる。確定の応答が返った時点で、残ることが保証されている。

どこで効いてくるか

複数の表を更新する処理では、ほぼ必ず関わる。

  • 記事を保存して、同時にタグの対応も更新する
  • 在庫を減らして、注文を記録する
  • データを移しながら、古いほうを消す

どれも片方だけ成功した状態が最も困る。原子性があれば、その状態にならない。

移行作業のとき

データを一括で書き換える作業では、途中で止まる可能性を前提にする。まとめて1つの単位にするか、1件ずつ確定して再実行できる形にするかを先に決める。

再実行できる形にする場合、同じ処理を2回流しても結果が変わらないようにしておく必要がある。

まとめ

  • A:全部成功するか、全部取り消すか
  • C:古い値と新しい値が混ざって見えない
  • I:確定していないデータは互いに見えない。ロックで実現する
  • D:確定したら電源断やクラッシュからも保護される
  • 分離性は強さを変えられる。緩めると速くなるが、見えるものが増える
  • 一括の書き換えでは、まとめるか、再実行できる形にするかを先に決める
SPONSORED

出典

図は本記事のために作成したもの。保証の範囲は製品と設定で変わるので、使っている環境の文書を確認すること。本記事は2026年10月13日時点の内容に基づく。

新しい記事が出たら、ブラウザの通知でお知らせします。

メールアドレスの登録は要りません。いつでも止められます。

AUTHOR

北海道のWEB屋

北海道を拠点に、Web業界14年・サポート実績1,000件以上。WordPressの復旧、サーバー移転、独自ドメインとメールの設定、PHP・JavaScriptの修正まで対応します。相談と見積もりは無料です。

SPONSORED

関連記事

RELATED