在数据库系统中,事务(transaction)是指由一系列数据库操作组成的一个完整的逻辑过程。例如,银行转账过程中要从原账户扣除金额和向目标账户添加金额,这两个数据库操作的总和构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具有ACID特性。
ACID是指数据库管理系统在写入或更新资料的过程中,为保证事务是正确可靠的所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)和持久性(durability)。
● 原子性:一个事务中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(rollback)到事务开始前的状态,就像该事务从来没有执行过一样。也就是说,事务不可分割、不可约简。
● 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设约束、触发器、级联回滚等。
● 隔离性:数据库允许多个并发事务同时对其数据进行读写和修改,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据不一致。事务隔离分为不同级别,包括未提交读(read uncommitted)、提交读(read committed)、可重复读(repeatable read)和串行化(serializable)。
● 持久性:事务处理结束后,对数据的修改是永久的,即便系统故障也不会丢失。