什么是事务?从表现上来看,事务是一个操作序列,这些操作要么都执行,要么都不执行,它是一个原子单元;从结果上看,事务是维护数据库或对象状态一致性的工作单位。事务的主要属性包括有:
- 原子性(ATOMICITY): 一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。
- 一致性(CONSISTENCY): 一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致状态转换到另一个一致状态。举个例子,在关系数据库的情况下, 一个一致的事务将保护定义在数据上的所有完整性约束。
- 隔离性(ISOLATION): 在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发的执行它们。这要求两件事:
- 在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。
- 两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。
- 持久性(DURABILITY): 一个被完成的事务的效果应该是持久的。
在任何情况下都要求应维护一个工作单元的成功或失败,并且在失败的情况下将所有的资源返回到失败前的数据状态中。这在金融、贸易、电子商业等领域是要严格遵守的。