perf(database): add SQLite performance pragmas (synchronous, cache, mmap)

Pair the existing journal_mode=WAL with the companion pragmas it needs to
actually pay off, and reduce read latency on hot query paths.

- synchronous=NORMAL: ~2-10x faster writes when paired with WAL. Safe — only
  risks losing the last committed txn on power loss; DB stays consistent.
- cache_size=-64000: 64MB page cache (default is 2MB).
- temp_store=MEMORY: keep sort/group temp tables in RAM.
- mmap_size=268435456: 256MB memory-mapped I/O for reads.

Applied to both connection sites: the main read-write/read-only connection
in libs/shared/database and the EPG worker connection in electron-backend.
The per-connection pragmas (cache_size, temp_store, mmap_size) apply to the
read-only agent-backend connection too.

Inspired by matracey/iptvnator@4ad8f88; ported manually since the file has
diverged significantly and the worker connection didn't exist in that fork.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 3d6901072049
This commit is contained in:
4grayandClaude Opus 4.7 committed 2026-05-01 21:02:52 +02:00
1 parent 1af287205f
commit e33cb70dec
2 files changed
+9

No files matched your search

@@ -527,8 +527,13 @@ export async function initDatabase(
if (!readonly) {
sqlite.pragma('journal_mode = WAL');
sqlite.pragma('synchronous = NORMAL');
}
sqlite.pragma('cache_size = -64000');
sqlite.pragma('temp_store = MEMORY');
sqlite.pragma('mmap_size = 268435456');
// Create tables only for read-write connections
if (!readonly && !skipTableCreation) {
createTables(sqlite);