ACID靠什么保证
ACID有四个特性,原子性、隔离性、持久性、一致性。
分别由undo log日志、锁和MVCC机制、redolog日志保证
原子性
原子性是由undo log日志文件进行保证的,出现异常时,根据undo log日志记录的历史操作进行事务回滚。
(undolog本身的产生也会被记录到redolog日志里,以确保在系统崩溃恢复时,undo log是完整可用的,从而能够成功完成回滚操作。)
隔离性
隔离性是由各种锁和MVCC机制保证的,锁解决了写和写的冲突,MVCC机制的undo日志版本链和Read view机制解决了读和写的冲突,保证了哪些数据对事务是可见的,哪些是不可见的。
持久性
持久性是主要是由redolog日志保证的,执行顺序是,数据先写入redolog,但标记为prepare状态,然后再写入binlog日志,写入binlog日志之后才会将redolog日志里的信息标记为commit。保障了在数据库服务崩溃时,可以快速根据redolog日志记录的数据进行恢复。
一致性
一致性是由其他三个特性和业务实现代码保证的。
