9.トランザクション

一般にデータベースには多くの人がアクセスし、様々な処理を行います。閲覧するだけの人もいれば、データを追加・更新したり、削除する人もいます。その中でも特に、データの追加・更新・削除、SQL 文で言うと「INSERT 文」「UPDATE 文」「DELETE 文」についての処理のまとまりをトランザクションと言います。

上記 3つのデータ操作文は、お互いに関連をもっていて、連続して実行されることにより、意味のある一つの単位を構成することが少なくありません。トランザクションとはこの一連の作業単位のことで、データの整合性を確保するため、またデータの障害復旧といった目的に利用されます。

9.1. トランザクションの特性

トランザクションは、次の 4つの特性を満たさなければなりません。これら 4つの特性は、それぞれの名前の頭文字をとって ACID 特性といいます。

原子性 (ATOMICITY)

トランザクションは、それ以上分割することのできない最小の作業単位であるということです。このため、トランザクションを構成する処理の結果がすべて有効になるか、またはすべて無効になるかのいずれかであるということです。 例えば、あるトランザクションに処理 A と処理 B があるとします。処理 A と処理 B が正しく実行されたときは両方の処理結果が有効になります。しかし、処理 A だけ、または処理 B だけが正しく実行された場合は、両方の処理結果が無効になります。

一貫性 (CONSISTENCY)

トランザクションで処理されるデータは、実行前と後でデータの整合性を持ち、一貫したデータを確保しなければなりません。

隔離性 (ISOLATION)

処理対象が同じデータである複数のトランザクションを一度に実行する場合は、それぞれのトランザクションは隔離された (独立された) 状態でデータの変更を行わなければなりません。 トランザクション A とトランザクション B がデータを共有している場合、トランザクション A で変更中のデータを、トランザクション B で処理することは認められないということです。トランザクション A が終了し、データが確定した後であればトランザクション B でデータを処理することができます。

持続性 (DURABILITY)

トランザクションで処理されるデータの状態はトランザクションが終了するまで変化しないということです。トランザクションで処理を変更する SQL 文を実行しますが、トランザクションの最後で変更を確定するまでは実際のデータの変更は行われないということです。
これらのトランザクションの特性により、データベースへの同時アクセスを制御したり、障害発生時の処理を制御することができるようになります。それぞれ、例をあげて説明します。