Paralleler Zugriff auf sqlite DB möglich?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Mittwoch 21. Januar 2009, 10:51

Hallo,
kann ich parallel mit mehreren Prozessen auf ein sqlite-Datenbank-File zugreifen (Schreiben und Lesen)?
Habe leider immer noch Python23 und kann es deshalb nicht testen.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 21. Januar 2009, 11:05

ice2k3 hat geschrieben:Habe leider immer noch Python23 und kann es deshalb nicht testen.
PySQLite gibt es auch für Python 2.3. Aber die Antwort ist "nein", SQLite kommt mit parallelen writes generell nicht zurecht.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Mittwoch 21. Januar 2009, 11:29

Hab es jetzt mal selber getestet.
Funktioniert ja nur nicht, wenn der eine Prozess noch in einem COMMIT Block ist, solang kann man mit dem 2. Prozess halt nur Lesen und nicht schreiben.
Paralleles Öffnen und Lesen der Datei funktioniert ja.
Ich denk mal, dass das den Anforderungen genügt. Kann ja den Lock mit try abfangen und einfach die Abfrage noch einmal versuchen.
BlackJack

Mittwoch 21. Januar 2009, 23:26

@Leonidas: Das stimmt so nicht. Problem ist nur das beim schreiben die ganze Datenbank gesperrt wird, das skaliert also sehr schlecht.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 22. Januar 2009, 00:16

Und dass SQLite viele ``fsync``-Aufrufe macht (Firefox 3 Alphas/Betas hatten das Problem), meine Vermutung ist dass Lodgeit gerade deswegen vor dem Umstieg auf Postgres manchmal so Probleme gemacht hat.
Antworten