事务ACID特性

事务是一组原子性的SQL查询,一个独立的工作单元。如果数据库引擎能够成功对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中任何一条因为崩溃或其他原因无法执行,那么所有的语句都不会被执行。事务内的语句,要么全部执行成功,要么全部执行失败。

  1. 原子性(atomicity)

    一个事务必须被视为一个不可分割的最小单元。

    整个事务中所有的操作要么全部提交(成功),要么全部回滚(失败)。

    对于单一事务而言,不可能只执行其中的一部分操作。

  2. 一致性(consistency)

    总是从一个一致的状态转换到另一个一致的状态。

    若在事务执行过程中系统崩溃,因事务的修改还未提交,事务的修改不会被保存。

  3. 隔离性(isolation)

    一个事务所做的修改在提交前,对于其他的事务是不可见的。

    是否可见与隔离级别(Isolation level)相关。

  4. 持久性(durability)

    一旦事务提交,修改将永久保存。即使系统崩溃修改的数据也不会丢失。

    持久性的表现与持久性级别相关。

实现以上特性能提供更高的安全性,但也会需要数据库做更多的额外工作。