ACID是数据库的事务四大基本要素:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)的缩写
原子性(Atomicity)
即是数据库一个事务内的sql语句,要么全部成功,要么全部失败
例如老李给胖子转账100元,需求上应该是老李减去100元,胖子加上100元,流水记录是100元,如果老李减去了100元后,事务提交失败,则全部回滚,老李恢复100元(回滚操作在mysql中是通过日志来完成的(undo log))
只有当整个事务全成功了,转账才会完成
一致性(Consistency)
数据库事务的一致性是指:在事务执行前和执行后,数据库的数据完整性不被破坏.这个完整性是个抽象的说法,举个例子在老李给胖子转账的事务中,老李-100,胖子+100,数据库中的金钱总数保持了完整性.
刚开始我觉得一致性和原子性有点分不清,后来想明白了,一致性针对的是逻辑上的完整性,而不是操作上的完整性,原子性针对的是操作上的完整性(全部成功或者全部失败)
例如在银行的转账事务中,老李+100,胖子+100,满足了原子性(事务的操作完整),但是违背了一致性(银行转账的一致性要保证金钱总数不变)
隔离性(Isolation)
数据库事务有隔离性,让并发的事务一个一个的执行,达到串行的效果.但是这在并发中会很大的影响数据库的性能,所以需要在安全与并发的效率之间寻求一个平衡.后面会具体谈谈隔离性
持久性(Durability)
事务提交完成将永久性的改变数据库,即使数据库出错了,也不会丢失数据
反过来可以理解为如果出了严重错误,事务是无法提交完成的,但只要他提交完成就被