MySQL 事务的提交和回滚机制是怎样的?
提交(COMMIT):事务修改生效,redo log 刷盘(组提交优化)、binlog 落盘、释放锁、MVCC 版本对外可见;回滚(ROLLBACK):利用 undo log 把数据恢复修改前状态(版本链逆向应用),undo log 本身保留(供 MVCC 旧版本读取,purge 线程清理)。关键流程(更新事务):写 undo log(回滚段)→ 修改 Buffer Pool 页 → 写 redo log(prepare)→ 写 binlog → redo log commit(两阶段提交,保证崩溃恢复一致性)。持久性由 redo log 保证(WAL:先写日志后落数据页)。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。