Tune SQLite settings for using SQLite in production for small sites

See: https://fractaledmind.github.io/2023/09/07/enhancing-rails-sqlite-fine-tuning/
This commit is contained in:
Jason McBrayer 2024-03-27 10:15:32 -04:00
parent ca5f2da34a
commit 877ffc0741
2 changed files with 15 additions and 0 deletions

2
.gitignore vendored
View File

@ -114,3 +114,5 @@ node_modules
.vscode
package-lock.json
yarn.lock
/db.sqlite3-*

View File

@ -0,0 +1,13 @@
from django.db.backends.signals import connection_created
def configure_sqlite_web_settings(sender, connection, **kwargs):
"""Configure sqlite for web application use."""
if connection.vendor == 'sqlite':
cursor = connection.cursor()
cursor.execute('PRAGMA journal_mode = WAL;')
cursor.execute('PRAGMA synchronous = NORMAL;')
cursor.execute('PRAGMA journal_size_limit = 67108864; -- 64 megabytes')
cursor.execute('PRAGMA mmap_size = 134217728; -- 128 megabytes')
cursor.execute('PRAGMA cache_size = 2000; -- 2000 pages')
cursor.execute('PRAGMA busy_timeout = 5000;')
connection_created.connect(configure_sqlite_web_settings)