11 Punkte von GN⁺ 2024-11-14 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
savvykang 2024-11-15

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.