Ich habe eine SQLite-Datenbank, die von zwei Prozessen verwendet wird. Ich frage mich, ob mit der neuesten Version von SQLite, während ein Prozess (Verbindung) eine Transaktion zum Schreiben in die Datenbank startet, der andere Prozess gleichzeitig aus der Datenbank lesen kann.
87
Antworten:
Ich habe Informationen aus verschiedenen Quellen gesammelt, hauptsächlich von sqlite.org, und sie zusammengestellt:
Erstens können standardmäßig für mehrere Prozesse dieselbe SQLite-Datenbank gleichzeitig geöffnet sein, und mehrere Lesezugriffe können parallel ausgeführt werden.
Beim Schreiben sperrt ein einzelner Schreibvorgang in die Datenbank die Datenbank für kurze Zeit. Nichts, selbst das Lesen, kann überhaupt auf die Datenbankdatei zugreifen.
Ab Version 3.7.0 steht eine neue WAL- Option (Write Ahead Logging) zur Verfügung, mit der das Lesen und Schreiben gleichzeitig fortgesetzt werden kann.
Standardmäßig ist WAL nicht aktiviert. Informationen zum Aktivieren von WAL finden Sie in der SQLite-Dokumentation.
quelle
SQLite3 erlaubt explizit mehrere Verbindungen :
Verwenden Sie zum Freigeben von Verbindungen den gemeinsam genutzten SQLite3-Cache :
quelle