Ottimizzare SQLite in Django per ambienti di produzione
La configurazione predefinita di SQLite in Django non è ideale per gli ambienti di produzione. SQLite è ottimizzato per sistemi embedded a bassa concorrenza, che sono esattamente l’opposto di ciò che una applicazione Django dovrebbe fare. Fortunatamente, è possibile migliorare la concorrenza modificando alcune impostazioni.
In Django 5.0, 4.2 o versioni precedenti:
- Abilitare la modalità WAL: Questa modifica riduce il blocco tra letture e scritture, migliorando il throughput. Esegui il comando
_journal_mode=WAL_
. - Utilizzare transazioni IMMEDIATE: Mentre riducono le prestazioni delle transazioni, evitano gli errori ‘database is locked’. Implementa DatabaseWrapper in un nuovo file e usalo.
- Ottimizzare impostazioni SQLite: Modifica parametri come mmap_size, journal_size_limit e cache_size per massimizzare le prestazioni.