- Eines der häufigsten Missverständnisse über SQLite ist, dass viele denken, „SQLite ist eine Datenbank, die nur eine einzige Verbindung erlaubt“, und sie deshalb nicht verwenden
- Das ist einerseits verwirrend (was bedeutet hier überhaupt „Verbindung“?) und andererseits in vielerlei Hinsicht falsch
- Leseoperationen (Read Operations)
- SQLite unterstützt mehrere gleichzeitige Leseoperationen vollständig
- Daten können gleichzeitig über mehrere „Verbindungen“ gelesen werden, ohne dass dabei Konflikte oder Probleme entstehen
- Schreiboperationen (Write Operations)
- SQLite verwendet bei Schreibvorgängen eine Write Lock auf Datenbankebene
- Mehrere gleichzeitige Schreibvorgänge sind nicht erlaubt; daher kann immer nur eine „Verbindung“ gleichzeitig einen Schreibvorgang ausführen
- In der Praxis ist das normalerweise kein Problem, weil man eine
IMMEDIATE TRANSACTION starten kann
- In diesem Fall kann SQLite in der Warteschlange erneut versuchen, die Write Lock zu erhalten
- (So kann der Schreibvorgang automatisch ausgeführt werden, sobald die Write Lock freigegeben wird)
1 Kommentare
https://www.sqlite.org/lockingv3.html
5.0 Schreiben in eine Datenbankdatei
Um in die Datenbank zu schreiben, muss ein Prozess zunächst wie oben beschrieben eine SHARED-Sperre erwerben. Nach dem Erwerb einer SHARED-Sperre muss er anschließend eine RESERVED-Sperre erwerben. Eine RESERVED-Sperre signalisiert, dass der Prozess zu einem späteren Zeitpunkt in die Datenbank schreiben wird. Zu einem Zeitpunkt kann nur ein Prozess eine RESERVED-Sperre halten. Andere Prozesse können die Datenbank jedoch weiterhin lesen, während die RESERVED-Sperre gehalten wird.