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