From 8fc291db4d8e04f9a0ff58f35dc971fc87ec4825 Mon Sep 17 00:00:00 2001 From: Etienne van Delden de la Haije Date: Sun, 5 Jul 2026 09:07:12 +0200 Subject: [PATCH] Tune SQLite pragmas for dev/test/production to reduce lock contention Adds temp_store/cache_size/wal_autocheckpoint tuning on top of Rails' built-in WAL defaults, ties pool size to RAILS_MAX_THREADS, and loosens synchronous/mmap_size/timeout in test to address the SQLite lock contention that PARALLEL_WORKERS=1 currently works around. --- config/database.sqlite.yml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/config/database.sqlite.yml b/config/database.sqlite.yml index 38616e7430..3decd947f8 100644 --- a/config/database.sqlite.yml +++ b/config/database.sqlite.yml @@ -1,7 +1,14 @@ +default_pragmas: &default_pragmas + temp_store: memory + cache_size: -20000 + wal_autocheckpoint: 10000 + default: &default adapter: sqlite3 - pool: 5 + pool: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %> timeout: 5000 + pragmas: + <<: *default_pragmas development: primary: @@ -18,10 +25,20 @@ test: <<: *default database: storage/test.sqlite3 schema_dump: schema_sqlite.rb + timeout: 20000 + pragmas: + <<: *default_pragmas + synchronous: "off" + mmap_size: 268435456 cable: <<: *default database: storage/test_cable.sqlite3 migrations_paths: db/cable_migrate + timeout: 20000 + pragmas: + <<: *default_pragmas + synchronous: "off" + mmap_size: 268435456 production: primary: