AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQLITE3 Multithreaded geht das?
Thema durchsuchen
Ansicht
Themen-Optionen

SQLITE3 Multithreaded geht das?

Ein Thema von QuickAndDirty · begonnen am 2. Aug 2017 · letzter Beitrag vom 9. Aug 2017
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#1

AW: SQLITE3 Multithreaded geht das?

  Alt 7. Aug 2017, 11:12
Dir ist bewusst, dass SQLite nicht zum Speichern von größeren Dateien in der DB geeignet ist? Die Performance ist dann unterirdisch.

https://www.sqlite.org/intern-v-extern-blob.html
Mir ist das klar. Aber wenn ein Kunde sagt, er möchte einen großen Teil seiner Server-Datenbank offline und tagesaktuell im Handy benutzen können...
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: SQLITE3 Multithreaded geht das?

  Alt 7. Aug 2017, 11:58
Wir haben es bei unserer App so gelöst, dass nur die Metadaten in der SQLite-DB gespeichert sind, die eigentlichen Binär-Dateien liegen so im Dateisystem (verschlüsselt, da das für die Daten notwendig ist).

Ein richtiges Paralleles Schreiben in die Datenbank funktioniert nicht, aber über TCriticalSection ist es möglich, dass mehrere Threads auf dieselbe DB schreiben/lesen.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: SQLITE3 Multithreaded geht das?

  Alt 7. Aug 2017, 12:12
Wir haben es bei unserer App so gelöst, dass nur die Metadaten in der SQLite-DB gespeichert sind, die eigentlichen Binär-Dateien liegen so im Dateisystem (verschlüsselt, da das für die Daten notwendig ist).

Ein richtiges Paralleles Schreiben in die Datenbank funktioniert nicht, aber über TCriticalSection ist es möglich, dass mehrere Threads auf dieselbe DB schreiben/lesen.
Ok, ich würde lieber einen TMonitor nehmen, aber egal...

Mehrere Threads sind ja nicht das Problem... In der Regel will man ja ggf. das die UI auch mal was aus der Datenbank lesen kann...

Da hilft es nicht, wenn der Thread steht und auf die Freigabe wartet, da die UI zwar - wenn event getrieben über den Thread - reaktive bleibt, aber kein Ergebnis liefert.

Mavarik
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: SQLITE3 Multithreaded geht das?

  Alt 7. Aug 2017, 12:55
Ok, ich würde lieber einen TMonitor nehmen, aber egal...
Was ist der Vorteil von TMonitor? Ich glaube wir hatten das auch mal untersucht und waren zu dem Fazit gekommen, dass TMonitor deutlich langsamer als TCriticalSection ist (siehe auch: https://www.delphitools.info/2013/06...iticalsection/ )
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.082 Beiträge
 
Delphi 12 Athens
 
#5

AW: SQLITE3 Multithreaded geht das?

  Alt 7. Aug 2017, 13:08
Ich glaube wir hatten das auch mal untersucht und waren zu dem Fazit gekommen, dass TMonitor deutlich langsamer als TCriticalSection ist (siehe auch: https://www.delphitools.info/2013/06...iticalsection/ )
Laut dem Edit gilt das wohl schon eine Weile nicht mehr:

Zitat:
Edit 2013-08-24: looks like the issue discussed here should be resolved in XE5, cf Monitoring the Monitor by Allen Bauer.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.392 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: SQLITE3 Multithreaded geht das?

  Alt 7. Aug 2017, 13:59
Im Gegenteil, für kurz andauernde Locks ist TMonitor durch ein paar SpinWait-Zyklen nun deutlich schneller als eine richtige Sperre per CriticalSection.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: SQLITE3 Multithreaded geht das?

  Alt 7. Aug 2017, 14:09
Laut dem Edit gilt das wohl schon eine Weile nicht mehr:

Zitat:
Edit 2013-08-24: looks like the issue discussed here should be resolved in XE5, cf Monitoring the Monitor by Allen Bauer.
Unsere App wurde glaube mit XE4, max. aber mit XE5 begonnen. Sollte man vielleicht noch mal prüfen.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#8

AW: SQLITE3 Multithreaded geht das?

  Alt 7. Aug 2017, 15:48
Es ist jedenfalls ungünstig, wenn einer Datenbank, für eine Umgebung in der selbst Dialoge in anderen Threads wie die Formulare laufen, keine Multithread-Unterstützung mitgegeben wurde.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz