面试常问面试冲刺 · MySQL
redo log、undo log 和 binlog 有什么区别?为什么需要两阶段提交?
先自己想一想,再看参考要点
参考要点
- undo log 由 InnoDB 写,记录旧版本,用于回滚和 MVCC
- redo log 由 InnoDB 写,记录对数据页的修改,循环写,用于崩溃恢复
- binlog 由 Server 层写,记录行修改或语句,追加写,用于主从复制和按时间点恢复
- 两阶段提交先写 redo log 进入 prepare,再写 binlog,最后 commit,崩溃后 prepare 的事务在 binlog 中有 Xid 就提交、否则回滚,保证主库数据与 binlog 一致,从库才不会不一致
学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。