1. 原子性(Atomicity):トランザクションに含まれる一連の処理が、「すべて実行される(All)」か、「一切実行されない(Nothing)」かのいずれかであることを保証します。途中で失敗した場合はロールバックにより何もしなかった状態に戻り、中途半端な状態(A口座から引かれたがB口座に増えていない等)を許しません。
2. 一貫性(Consistency):トランザクションの実行前後で、データベースのあらかじめ定義されたルール(一意性制約、参照制約などの整合性制約)が常に満たされていることを保証します。また、銀行残高がマイナスになってはならないというビジネスルールがある場合、それを違反するような更新処理はエラーとしてはじかれます。
3. 独立性(Isolation / 隔離性):複数のトランザクションが同時に実行された場合でも、それぞれの処理が互いに干渉せず、順番に1つずつ実行された場合と同じ結果になることを保証します。これを実現するために「ロック(排他制御)」を行います。データベースには、独立性の厳格さと処理速度のトレードオフを調整するための「トランザクション分離レベル(Read UncommittedからSerializableまでの4段階)」が規定されています。
4. 耐久性(Durability / 永続性):トランザクションが正常に完了(コミット)した後は、その結果がその後のシステム障害(停電やディスク破損など)が発生しても決して失われないことを保証します。これは、データをメモリからHDDやSSDなどの永続的な記録媒体に書き出すことや、トランザクションのログ(ライトアヘッドログ:WAL)を即座にディスクに記録しておくことで実現されます。