CS-Notes 学习笔记
Java 后端 · MySQL

为什么需要两阶段提交?

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

参考要点

  • 事务要同时写 redo log 和 binlog,只写成功一个就崩溃会让主从不一致,例如 redo log 写了而 binlog 没写,主库保留修改,从库却收不到
  • 两阶段提交:先写 redo log 并刷盘进入 prepare 状态,再写 binlog 并刷盘(带 Xid),最后在 redo log 中标记提交
  • 崩溃恢复时 prepare 状态的事务在 binlog 中找到 Xid 就提交,否则回滚
在学习站中自测这道题看这道题所在的一天

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