MysQL日志 Log
undolog
redolog
Binlog
WAL
WAL(Write-Ahead Logging)是一种数据库日志机制,用于保证数据的一致性和持久性。
核心思想是:在对数据库中的数据进行修改之前,必须先将修改内容写入日志(WAL),这样即使系统崩溃,也能通过日志恢复数据。
简单类比:写书时先把每句话记在草稿纸上(WAL),哪怕电脑断电,草稿还在,可以用来恢复书稿内容。
工作流程简要如下:
- 客户端发起写操作;
- 数据库先将修改记录写入 WAL 日志;
- 然后再修改内存中的数据;
- 提交事务时,根据 WAL 将数据刷新到磁盘;
- 如果崩溃,通过 WAL 日志回放未落盘的数据。
WAL 的好处包括:
- 提高写性能,顺序写日志比随机写数据快
- 支持延迟刷盘和批量操作
- 能在系统崩溃后快速恢复数据一致性。
WAL 常用于哪些数据库?
-
PostgreSQL:WAL 是其核心机制之一。
-
MySQL(InnoDB 引擎):对应的是 redo log。
-
SQLite:也支持 WAL 模式。
-
RocksDB、LevelDB 等存储引擎。
常见支持 WAL 的系统包括 PostgreSQL、SQLite、MySQL(InnoDB 的 redo log)、RocksDB 等。