SQLite 的 WAL 模式改了什么

2026-01-30

并发读写表现变化很大,但代价也要知道。

默认模式的问题

默认的日志模式下,写操作会阻塞读操作。小站点上不明显,并发一上来就会出现等待。

WAL 带来的变化

WAL 模式下,读写不再互相阻塞,写入先追加到日志文件,之后再合并回主库。这对读多写少的场景改善非常明显。

代价

会多出日志文件,占用的空间比主库可能还大;必须确保同一个数据库只被一台机器访问,因为日志文件不适合放在网络文件系统上。

注意收尾

连接用完要正确关闭,否则日志文件会一直增长。定期做一次 checkpoint,可以把它收敛回主库。