每个业务逻辑都是由一系列数据库访问完成的,这一系列数据库访问可能会修改多条数据记录,这一系列修改应该是一个整体,绝不能仅修改其中的几条数据记录。也就是说,多个数据库原子访问应该被绑定成一个整体,这就是事务。事务是一个最小的逻辑执行单元,整个事务不能分开执行,要么同时执行,要么同时放弃执行。

事务的概念

事务是一步或几步操作组成的逻辑执行单元,这些基本操作作为一个整体执行单元, 它们要么全部执行, 要么全部取消执行,绝不能仅仅执行一部分。 一般而言,一个用户请求对应一个业务逻辑方法,一个业务逻辑方法往往具有逻辑上的原子性,此时应该使用事务。例如一个转账操作,对应修改两个账户的余额,这两个账户的修改要么同时生效,要么同时取消,同时生效是转账成功, 同时取消是转账失败:但不可只修改其中一个账户, 那将破坏数据库的完整性。

通常来讲,事务具备4个特性:原子性(Atomicity)、一致性(Consistency)、隔离’性(Isolation)和持续性(Durability)。 这4个特性也简称为ACID性,具体描述如下:

原子性( Atomicity )。事务是应用中最小的执行单位,就如原子是自然界最小颗粒,具有不可再分的特征一样。 事务是应用中不可再分的最小逻辑执行体。

一致性( Consistency )。事务执行的结果,必须使数据库从一种一致性状态,变到另一种一致性状态。当数据库只包含事务成功提交的结果时,数据库处于一致性状态。如果系统运行发生中断,某个事务尚未完成而被迫中断,而该未完成的事务对数据库做的修改已被写入数据库,此时,数据库就处于一种不正确的状态。 比如银行在两个账户之间转账:从A胀户向B账户 转入1000元。系统先减少A账户的1000元,然后再为B账户增加1000元。 如果全部执行成功, 数据库就处于一致性状态。如果仅执行完A账户金额的修改,而没有增加B账户的金额,则数据库就处于不一致性状态。因此, 一致性是通过原子性来保证的。

隔离性(Isolation)。各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务,都是隔离的。 即, 并发执行的事务之间不能互相影响。

持续性(Durability)。持续性也被称为持久性(Persistence),指事务一旦提交,对数据所做的任何改变都要记录到永久存储器中,通常就是保存到物理数据库。