データベース

ACID特性とは

トランザクションのACID特性

トランザクションのACID特性(読み:アシッドとくせい)は、トランザクション処理において必要とされる4つの要素

  • Atomicity(原子性)
  • Consistency(一貫性)
  • Isolation(独立性)
  • Durability(永続性・耐久性)

を頭字語で表したものです。

ACID特性の前に「トランザクション」について説明します。

トランザクションとは

トランザクションは、一連の処理をひとまとめにしたものであり、処理がすべて成功したらコミット(確定)、一部でも失敗したらロールバック(破棄)します。

次の例は、商品購入の処理をトランザクションで管理しています。

トランザクションとは
  • トランザクション開始
  • 商品の在庫を減らす
  • 購入者情報を登録する
  • トランザクション終了

トランザクションは、処理がすべて成功したら一連の処理をすべて確定(コミット)、一部でも失敗したらすべて破棄(ロールバック)します。

上記例では、「②商品の在庫を減らす」「③購入者情報を登録する」の両方が成功した場合のみ処理を確定(コミット)、一部でも失敗したらトランザクションの処理はすべて破棄(ロールバック)します。

トランザクション管理しないと、次の図のように一貫性のないデータになってしまう可能性があります。

トランザクション管理しない場合の例
  • 商品の在庫を減らす(成功)
  • 購入者情報を登録する(失敗

トランザクション管理している場合は、トランザクション終了時に一連の処理を「確定(コミット)」もしくは「破棄(ロールバック)」します。

しかし、トランザクション管理していない場合は、SQLを実行した時点で確定します。

その結果、商品の在庫は減っているにもかかわらず、購入者情報がない、という一貫性のないデータになってしまいます。

このようなデータを作らないためにも、トランザクション管理は重要です。

ACID特性とは

ACID特性とは、トランザクション処理において必要とされる4つの要素(Atomicity、Consistency、Isolation、Durability)のことです。

Atomicity(原子性)

ACID特性のAtomicity(原子性)は、トランザクション内の処理が「すべて実行する」か「まったく実行しない」のいずれかであることを証明する性質です。

中途半場に一部だけ実行することは許容しません。

Consistency(一貫性)

ACID特性のConsistency(一貫性)は、トランザクションによりデータの矛盾が生じないこと、つまり常にデータベースの整合性が保たれていることを保証する性質です。

Isolation(独立性)

ACID特性のIsolation(独立性)は、複数のトランザクションを同時に実行した場合と、順番に実行した場合の結果が等しくなることを保証する性質です。

同一データベースに対する同一処理は、何度実行しても結果は同じです。

Durability(永続性・耐久性)

ACID特性のDurability(永続性・耐久性)は、トランザクション完了後にハードウェア障害が発生しても、更新されたデータベースの内容は保証する性質です。

helpful