一、预写日志 WAL(Redo/Undo)
日志分为 redo log 和 undo log
redo log 记录了事务修改后的状态,主要用于事务崩溃恢复,保证事务的持久性。
undo log 记录了事务修改前的状态,主要用于事务回滚,保证事务的原子性。
(一)什么是 WAL(Write-Ahead Logging 预写日志)?
1. Write-Ahead(先写日志,后写数据)
2. Force-at-Commit(提交时强制刷盘)
1、先写日志(记录下事务要对数据做的改变)
2、再写数据页(真正改变内存/磁盘上的数据)
写操作才写 WAL,读操作不写 log
一条 update 的日志大约是一条 insert 的日志的 1.5~3 倍
WAL 计数让 MySQL 的写操作从随机写变成了顺序写
