トランザクション ACID と分離レベル

ACID 特性と4段階の分離レベル、ダーティリード/ノンリピータブルリード/ファントムリードを整理。

ACID 特性は AP DB 分野の必出概念。分離レベルとそれぞれで起こる異常を覚えれば、科目Aは確実に1問取れます。

鳴海 理央(普段) 鳴海 理央

トランザクション は DB に対する一連の処理単位。
ACID 特性: 原子性・一貫性・独立性・持続性 を満たします。

砂原 ニコ(普段) 砂原 ニコ

分離レベルって何のこと?

緒方 ナオミ 先生(笑顔) 緒方 ナオミ 先生

複数のトランザクションが同時実行されたときの『見え方』のレベル。
分離レベル は4段階: READ UNCOMMITTED < READ COMMITTED < REPEATABLE READ < SERIALIZABLE。

藤咲 まりあ(普段) 藤咲 まりあ

それぞれで何が違うのぉ?

鳴海 理央(普段) 鳴海 理央

レベルが低いほど性能が高く異常が増えます。
READ UNCOMMITTED は ダーティリード、READ COMMITTED はノンリピータブルリード、REPEATABLE READ は ファントムリード、SERIALIZABLE はすべて防止。

緒方 ナオミ 先生(普段) 緒方 ナオミ 先生

PostgreSQL のデフォルトは READ COMMITTED、MySQL InnoDB は REPEATABLE READ なのよ。
AP では分離レベルと異常の対応表を覚えておきましょうね。

確認クイズ

トランザクションの ACID 特性のうち『独立性 (Isolation)』の説明として最も適切なものはどれか。

  1. トランザクション全体が成功するか全失敗するかのいずれかであること
  2. 実行前後でデータの整合性制約が保たれること
  3. 複数のトランザクションが同時実行されても、互いに影響しないこと
  4. コミットされたトランザクションの結果は永続化されること
こたえを見る

正解: 3. 複数のトランザクションが同時実行されても、互いに影響しないこと

独立性 (Isolation) は『同時実行されるトランザクション間が互いに影響しない』性質。1 は原子性、2 は一貫性、4 は持続性 (Durability) です。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。