Ottimizzare SQLite in Django per ambienti di produzione

Migliora la concorrenza e le prestazioni del database SQLite in ambienti Django 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:

  1. Abilitare la modalità WAL: Questa modifica riduce il blocco tra letture e scritture, migliorando il throughput. Esegui il comando _journal_mode=WAL_.
  2. Utilizzare transazioni IMMEDIATE: Mentre riducono le prestazioni delle transazioni, evitano gli errori ‘database is locked’. Implementa DatabaseWrapper in un nuovo file e usalo.
  3. Ottimizzare impostazioni SQLite: Modifica parametri come mmap_size, journal_size_limit e cache_size per massimizzare le prestazioni.