A: atomicity 原子性
事务(Transaction),一般是指要做的或所做的事情。一个数据库事务通常包含对数据库进行读或写的一个操作序列。原子性保证了一个事务要么被完整地完成,要么完全没有执行。不会在结束和开始中间的某个环节。事务在执行过程中发生错误,会有数据库系统回滚到事务开始之前的状态。原子性是保证一致性的一个前提条件,但是不是充分条件,保证一致性还需要其他方法协助
C: consistency 一致性
数据库只存在两种状态,要么是事务提交之后,完成了执行并且完整地更新了磁盘当中数据库文件的状态,要么保存事务提交之前的状态。一致性保证了数据库的事务执行完成的时候,能从一个状态完整的转移到另外一个状态,并且保证数据一致。在关系型数据库上,这意味着所有的规则必须应用到所有的事务的修改上,以便维护数据完整性
I: isolation 隔离性
数据库允许并发,数据库需要具有多个事务同时对数据进行读写和修改的能力。隔离性可以防止多个事务并发执行导致的数据不一致。事务隔离有四个等级,效果分别如下
===========================================================================================
隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read)
===========================================================================================
未提交读(Read uncommitted) 可能 可能 可能
已提交读(Read committed) 不可能 可能 可能
可重复读(Repeatable read) 不可能 不可能 可能
可串行化(Serializable ) 不可能 不可能 不可能
===========================================================================================
脏读:A提交的最新数据,B来读取读取到的却是A提交之前的数据
不可重复读:A在B事务执行过程中更改了数据,B事务本应该保证两次读取数据一致,但是数据却被A提交后的更新冲刷更新了
幻读:A在B事务执行过程中添加删除了数据,B事务读取的时候,导致结果集合变化,两次获得的结果集合不一致。
D: Durability 持久性
执行完的事务,即便系统宕机了,最新的执行完的数据修改也是永久的,不会丢失。