ACID靠什么保证的?
-
A 原子性由
undo log
日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的sql -
C一致性由其他三大特性保证、程序代码要保证业务上的一致性
-
I 隔离性由
MVCC
来保证 -
D持久性由
内存+redo log
来保证,mysql修改数据同时在内存和redo log记录这次操作,宕机的时候可以从redo log恢复。
InnoDB redo log 写盘,InnoDB 事务进入 prepare 状态。
如果前面 prepare 成功,binlog 写盘,再继续将事务日志持久化到 binlog,如果持久化成功,那么InnoDB 事务则进入 commit 状态(在 redo log 里面写一个 commit 记录)
redolog的刷盘会在系统空闲时进行