トランザクションとは
データベースのトランザクションとは複数の処理のまとまりのことです。1つの処理ではなくワンセットになった複数の処理になります。
複数の処理をまとめるとはどういうことかを僕なりにイメージしてみました。
もともと財布に1万円が入っていて2つの処理を行ったとします。
- 朝に7000円分の買い物をする
- 夕方に銀行から5000円引き出して財布に入れる
この1連の流れの中で最終的に財布に入っているのは8000円になっているはずです。しかしもしこれらの処理を別々に切り出してしまうと、夕方になってなぜ財布に3000円しか残っていないのかが分からなくなってしまいます。そうならないように複数の処理を連結させてまとめるのです。
ACID特性とは
このトランザクションには4つの特性が標準規格によって決められているみたいです。
- 原子性/不可分性(Atomocity)
- 一貫性/整合性(Consistency)
- 独立性/隔離性(Isolation)
- 永続性/耐久性(Durability)
以上の4つです。
原子性(Atomocity)
トランザクションに含まれる複数の処理は、「全て実行される」か「1つも実行されない」のどちらかになるということ。
一貫性(Consistency)
トランザクションの前後で矛盾が生じないこと。もし制約違反の処理があった場合は処理が中断されて実行前に戻される。
独立性(Isolation)
トランザクションの処理過程は外部からは隔離されているため、その他のトランザクションの影響を受けないこと。
永続性(Durability)
トランザクションが完了した後、保存されたデータは失われないこと。データ操作の時系列の記録(ログ)がストレージに保存されるため、障害で処理が中断しても、ログを元にして障害発生前に復旧する。
以上です。データベースに関してはほとんど扱っていない状態で知識を言語化して整理してみました。間違ったことを言っていたら指摘していただけると助かります。
またこちらの記事を参考にしました。
データベースさわったこと無い新人向けトランザクション入門 - Qiita