MySQL redo log 为什么是物理日志?WAL 机制是什么?
redo log 记录页的物理修改(如页号 + 偏移 + 新值),因为崩溃恢复需要精确重放页变更(不依赖 SQL 重跑,幂等高效)。WAL(Write-Ahead Logging,先写日志再改数据):事务提交时先把 redo log 刷盘,数据页修改可留在 Buffer Pool 由后台异步落盘——即使数据页没刷盘崩溃,重启后重放 redo 即可恢复,保证持久性且性能高(顺序写日志 vs 随机写数据页)。刷盘策略:innodb_flush_log_at_trx_commit=1(每次提交刷盘,最安全)或 0/2(性能优先,最多丢 1 秒)。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。