CS-Notes 学习笔记
面试常问面试冲刺 · MySQL

redo log、undo log 和 binlog 有什么区别?为什么需要两阶段提交?

先自己想一想,再看参考要点

参考要点

  • undo log 由 InnoDB 写,记录旧版本,用于回滚和 MVCC
  • redo log 由 InnoDB 写,记录对数据页的修改,循环写,用于崩溃恢复
  • binlog 由 Server 层写,记录行修改或语句,追加写,用于主从复制和按时间点恢复
  • 两阶段提交先写 redo log 进入 prepare,再写 binlog,最后 commit,崩溃后 prepare 的事务在 binlog 中有 Xid 就提交、否则回滚,保证主库数据与 binlog 一致,从库才不会不一致
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。