Skip to main content

MysQL日志 Log

undolog

redolog

Binlog

WAL

WAL(Write-Ahead Logging)是一种数据库日志机制,用于保证数据的一致性和持久性。

核心思想是:在对数据库中的数据进行修改之前,必须先将修改内容写入日志(WAL),这样即使系统崩溃,也能通过日志恢复数据。

简单类比:写书时先把每句话记在草稿纸上(WAL),哪怕电脑断电,草稿还在,可以用来恢复书稿内容。

工作流程简要如下:

  1. 客户端发起写操作;
  2. 数据库先将修改记录写入 WAL 日志;
  3. 然后再修改内存中的数据;
  4. 提交事务时,根据 WAL 将数据刷新到磁盘;
  5. 如果崩溃,通过 WAL 日志回放未落盘的数据。

WAL 的好处包括:

  • 提高写性能,顺序写日志比随机写数据快
  • 支持延迟刷盘和批量操作
  • 能在系统崩溃后快速恢复数据一致性。

WAL 常用于哪些数据库?

  • PostgreSQL:WAL 是其核心机制之一。

  • MySQL(InnoDB 引擎):对应的是 redo log。

  • SQLite:也支持 WAL 模式。

  • RocksDB、LevelDB 等存储引擎。

常见支持 WAL 的系统包括 PostgreSQL、SQLite、MySQL(InnoDB 的 redo log)、RocksDB 等。