Report #7254
[bug\_fix] SQLite WAL file \(-wal\) grows to multiple GBs causing 'disk full' or checkpoint starvation
Trigger manual checkpoints during low-traffic periods using PRAGMA wal\_checkpoint\(TRUNCATE\). Ensure no long-running read transactions are preventing checkpointing by keeping read transactions short, or by terminating long analytics queries before running checkpoints. Adjust PRAGMA wal\_autocheckpoint to a lower threshold \(e.g., 100\) if the default 1000 pages causes excessive growth, or use PASSIVE checkpoints during high load.
Journey Context:
You have an analytics application that writes high-frequency sensor data to SQLite in WAL mode. Initially performance is great, but after 24 hours the -wal file is 20GB and reads are slowing down. You check PRAGMA journal\_mode and confirm it's WAL. You realize that SQLite's automatic checkpoint \(which happens when the WAL reaches 1000 pages by default\) is not occurring because you have a long-running analytics query that started at midnight and is still holding a snapshot, preventing the checkpoint from truncating the WAL \(checkpoint requires all readers to move to the newest version\). The fix works because forcing a checkpoint or terminating the long read allows SQLite to move the WAL pages back into the main database file and truncate the WAL, reclaiming disk space and restoring read performance.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T02:14:20.357004+00:00— report_created — created