J'ai une base de données SQLite qui est utilisée par deux processus. Je me demande, avec la version la plus récente de SQLite, alors qu'un processus (connexion) démarre une transaction pour écrire dans la base de données, l'autre processus pourra-t-il lire simultanément à partir de la base de données?
87
Réponses:
J'ai collecté des informations à partir de diverses sources, principalement sur sqlite.org, et les ai rassemblées:
Premièrement, par défaut, plusieurs processus peuvent avoir la même base de données SQLite ouverte en même temps, et plusieurs accès en lecture peuvent être satisfaits en parallèle.
En cas d'écriture, une seule écriture dans la base de données verrouille la base de données pendant une courte période, rien, même la lecture, ne peut accéder au fichier de la base de données.
À partir de la version 3.7.0, une nouvelle option «Write Ahead Logging» (WAL) est disponible, dans laquelle la lecture et l'écriture peuvent se dérouler simultanément.
Par défaut, WAL n'est pas activé. Pour activer WAL, reportez-vous à la documentation SQLite.
la source
SQLite3 autorise explicitement plusieurs connexions :
Pour partager des connexions, utilisez le cache partagé SQLite3 :
la source