chore(db): use shorter read transactions and periodic checkpoint for smaller WAL (#10027)

Also make sure our journal size limit is in effect when checkpointing.
This commit is contained in:
Jakob Borg
2025-04-02 22:19:34 +02:00
committed by GitHub
parent 4096a35b86
commit 82a0dd8eaa
5 changed files with 53 additions and 24 deletions
+10 -4
View File
@@ -86,10 +86,16 @@ func (s *Service) periodic(ctx context.Context) error {
return wrap(err)
}
_, _ = s.sdb.sql.ExecContext(ctx, `ANALYZE`)
_, _ = s.sdb.sql.ExecContext(ctx, `PRAGMA optimize`)
_, _ = s.sdb.sql.ExecContext(ctx, `PRAGMA incremental_vacuum`)
_, _ = s.sdb.sql.ExecContext(ctx, `PRAGMA wal_checkpoint(TRUNCATE)`)
conn, err := s.sdb.sql.Conn(ctx)
if err != nil {
return wrap(err)
}
defer conn.Close()
_, _ = conn.ExecContext(ctx, `ANALYZE`)
_, _ = conn.ExecContext(ctx, `PRAGMA optimize`)
_, _ = conn.ExecContext(ctx, `PRAGMA incremental_vacuum`)
_, _ = conn.ExecContext(ctx, `PRAGMA journal_size_limit = 67108864`)
_, _ = conn.ExecContext(ctx, `PRAGMA wal_checkpoint(TRUNCATE)`)
return nil
}