SQLite en production : leçons pratiques

Original : Learning a few things about running SQLite

Pourquoi c'est important

Retour terrain utile sur les limites opérationnelles de SQLite en production web.

Julia Evans, développeuse, partage ses retours d'expérience sur l'utilisation de SQLite comme base de données pour un site Django en production, abordant ANALYZE, les suppressions massives, les sauvegardes et les limites du mode WAL.

Julia Evans a choisi SQLite pour un site Django en production, sa quatrième expérience avec ce moteur. Elle souligne que malgré les articles affirmant que SQLite convient aux petits sites, c'est toujours un vrai système de base de données avec ses complexités.

Première découverte : l'importance de la commande ANALYZE. Une requête FTS5 sur 4 000 lignes prenait 5 secondes. Après exécution d'ANALYZE, le temps est passé à environ 0,05 seconde. ANALYZE génère des statistiques permettant à l'optimiseur de requêtes de prendre de meilleures décisions.

Deuxième problème : les suppressions massives. Lors de nettoyages de la base (ex. tâches terminées via django-tasks-db), des opérations de plus de 5 secondes bloquaient d'autres workers tentant d'écrire, provoquant des timeouts et des crashs. La solution adoptée : effectuer ces opérations par petits lots. Elle reconnaît que cette limitation illustre l'intérêt d'une base comme PostgreSQL, capable de gérer plusieurs écrivains simultanément.

Pour les sauvegardes, elle utilise VACUUM INTO pour créer une copie propre, puis la compresse et l'envoie vers S3 via restic, avec surveillance par dead man's switch.

Source

jvns.ca — Lire l'original →