1. ホーム
  2. database

[解決済み] ACIDとデータベーストランザクションの仕組みは?

2022-04-22 20:45:42

質問

ACIDとデータベース・トランザクションの関係を教えてください。

ACIDはデータベース・トランザクションを与えるのか、それとも同じものなのか?

このトピックについて、どなたか教えてください。

どのように解決するのですか?

ACID は、データベースを修正する際に適用したいプロパティのセットです。

  • 原子性
  • 一貫性
  • 分離
  • 耐久性

トランザクションは、ACID特性のいくつかを達成するために使用される、関連する変更のセットです。トランザクションは、ACID特性を実現するためのツールです。

アトミック性とは、トランザクションのすべてが起こるか、あるいはまったく起こらないかを保証できることです。複雑な操作を1つのユニットとして、オール・オア・ナッシングで行うことができ、クラッシュ、停電、エラー、その他によって、関連する変更の一部しか起こっていない状態になることは許されないのです。

一貫性とは、データの一貫性を保証することであり、関連するデータに対して持つ制約が一切破られないことを意味します。

分離とは、あるトランザクションが、まだ完了していない別のトランザクションからデータを読み取ることができないことを意味します。2つのトランザクションが同時に実行されている場合、それぞれのトランザクションは順次実行されているかのように世界を見ます。一方が書いたデータを他方が読む必要がある場合、他方が終了するまで待たなければなりません。

耐久性とは、トランザクションが完了すると、すべての変更が耐久性のある媒体(ハードディスクなど)に記録され、トランザクションが完了した事実も同様に記録されることが保証されることである。

つまり、トランザクションはこれらの特性を保証するためのメカニズムであり、全体としてアトミックで、一貫した結果を出し、他の操作から隔離され、永続的に記録できるように、関連する操作をグループ化する方法なのです。