chore(db): enable auto-vacuum and add periodic maintenance#31528
Open
BYK wants to merge 1 commit into
Open
Conversation
One-time migration: detect auto_vacuum = 0 (NONE) and switch to INCREMENTAL. Run a full VACUUM to apply the mode change. Subsequent database opens skip this since the mode persists. This prevents the database file from growing indefinitely as deleted rows leave behind free pages that are never reclaimed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue for this PR
Closes #31526
Type of change
What does this PR do?
Enables SQLite incremental auto-vacuum and adds maintenance utilities:
One-time migration: detects
auto_vacuum = 0(NONE) and switches toINCREMENTAL. Runs a fullVACUUMto apply the mode change. Subsequent database opens skip this since the mode persists.checkpoint(): runsPRAGMA wal_checkpoint(TRUNCATE)to flush the WAL file and reclaim disk space.vacuum(): runsPRAGMA incremental_vacuumto reclaim free pages from deleted rows.These can be called periodically (e.g., on session idle) to keep database size in check.
Re-filing of #23053 which was auto-closed by the cleanup bot.
How did you verify your code works?
Tested locally by checking
PRAGMA auto_vacuumbefore and after the migration. Verified the one-time VACUUM runs on first open and is skipped on subsequent opens. Testedcheckpoint()andvacuum()functions directly.Screenshots / recordings
N/A — database maintenance improvement.
Checklist