ACID理论是数据库为了保证事务正确性而提出的一种理论,它包含四个约束:
- 原子性(Atomicity):组成事务的一组操作,要么全部成功,要么全部失败,不会在中间的某个环节结束。如果在事务的执行过程中,某个操作失败了,数据库会回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
- 一致性(Consistency):事务执行前后,数据库的完整性没有被破坏,事务执行的前后都是合法的数据状态。
- 隔离性(Isolation):数据库允许多个事务并发地对数据进行读写。多个事务并发执行会造成脏读,不可重复读,幻读,而隔离性可以防止多个事务交叉执行导致的数据不一致问题。事务的隔离级别有读未提交,读已提交,可重复读,串行化。
- 持久性(Durability):事务提交后,对数据的修改是持久的,不会因为外部原因丢失。
ACID理论是对事务特性的抽象和总结,方便我们实现事务。也就是说,如果我们使得一组操作具有ACID特性,那么这组操作就可以称之为事务。在单机上,可以通过锁、时间序列等机制保障操作的顺序执行,让系统实现ACID特性。但是,分布式系统涉及多个节点间的操作,单机ACID的实现方法无能为力。这里就要用到分布式事务协议了。