MySQL 在突然断电时,redo log 和 undo log 若尚未刷盘就发生重启,是否会导致数据丢失?请说明其内部的恢复机制与可能的数据不一致场景。
考察说明
考察对 MySQL 持久化机制、redo/undo 日志与崩溃恢复原理的理解
回答思路
- 明确指出 redo log 保证已提交事务不丢失,undo log 保证未提交事务可回滚
- 说明 redo log 会通过组提交和后台刷盘策略尽量持久化,且其本身有循环写与 checkpoint 机制
- 说明崩溃恢复时从 redo log 重放已提交事务,从 undo log 回滚未提交事务
- 指出若 redo log 本身未刷盘(如极端掉电)可能丢失最近未持久化的已提交事务,但通常依赖双写缓冲和 page cache 刷盘策略缓解
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。