天天看点

数据库事务的ACID特性

什么是事务

事务就是一组原子性的SQL操作,或者说是一个独立的工作单元。如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么剩余没有执行的所有语句都不会执行,执行过的语句回滚(rollback),恢复到这个SQL语句单元未执行前的状态。换句话说,事务内的语句,要么全部执行成功,要么全部执行失败。

什么是ACID

ACID表示原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。一个运行良好的事务处理系统,必须具备这些标准特征。

原子性(atomicity)

一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。

一致性(consistency)

数据库总是从一个一致性的状态转换到另外一个一致性的状态。当SQL语句执行过程中某一条语句执行失败,最终也不会出现业务异常的情况,因为事务最终没有提交,所以事务中所做的修改也不会保存到数据库中。

隔离性(isolation)

一般来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。即当前事务对数据库做了修改,但是没有提交,则此时对于另外一个事务来说,数据库的状态没有改变。

持久性(durability)

一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。