ACID

A:原子性

在数据库层面的原子性指的是要么都成功,要么都失败(不同于并发编程中的原子性:操作不可被打断),它在InnoDB中是由undo log日志来保证的

C:一致性

事务完成时,修改后的数据要满足数据库对于数据完整性的约束,包括主键约束、约束检查等,同时要满足数据库中业务数据的一致性,比如银行转账,有人多钱就肯定要有人少一样数量的钱

这里是靠原子性,隔离性,持久性一起保证的

分布式理论中也有一致性,但它指的是所有服务节点都保持一致

I:隔离性

各个事务并发操作下互不影响

靠MVCC和锁机制来保证的,比如在可重复读的事务隔离级别下,MVCC保证了快照读的隔离性,锁保证了当

前读的隔离性

D:持久性

事务一旦提交or回滚,它对数据库的修改是永远不变的

InnoDB是通过redo log来保证事务修改的数据不丢失