Mehrere threads aus der Sicht der DB sind mehrer Verbindungen/Benutzer. Da würde ich vorsichtig sein. Das kann durch das locking von Sqllite nach hinten losgehen.Socke hat geschrieben:Für SQLite ist es ja kein Problem, mehrere Threads zu starten, die verschiedene Auswertungen durchführen.
In-Memory Datenbank -- Speicherdurchsatz?
- af0815
- Lazarusforum e. V.
- Beiträge: 6763
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: In-Memory Datenbank -- Speicherdurchsatz?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: In-Memory Datenbank -- Speicherdurchsatz?
Ich glaube einfach, dass die SQLite3.exe für Win32 nicht mit mehr als 2 GB RAM umgehen kann. Es werden nämlich maximal 3 Queries ausgeführt. Lazarus/Free Pascal habe ich in meinen Tests bisher noch gar nicht verwendet.marcov hat geschrieben:Hört sich mehr an als ein Programmierfehler. E.g. ein pro query alloziertes Object (object von SQLite, nicht Lazarus) das nicht richtig freigegeben wird. zb transaction context oder so.
SQLite sperrt immer die gesamte Datenbank-Datei, wenn Daten geschrieben werden. Das ist bei mir aber eher ein geringes Problem, da die Sachlage wie folgt aussieht:af0815 hat geschrieben:Mehrere threads aus der Sicht der DB sind mehrer Verbindungen/Benutzer. Da würde ich vorsichtig sein. Das kann durch das locking von Sqllite nach hinten losgehen.Socke hat geschrieben:Für SQLite ist es ja kein Problem, mehrere Threads zu starten, die verschiedene Auswertungen durchführen.
- Es gibt eine Ausgangsdatenmenge; diese verändert sich nicht
- Es gibt verschiedene SQL-Abfragen
- Die SQL-Abfragen bauen teilweise aufeinander auf
- Die Unterabfragen können in SQLite bequem als View bzw. als berechnete Tabelle erstellt werden
- Tabelle oder View hängt von der Anzahl der darauf aufbauenden Abfragen ab
- Es gibt also voneinander unabhängige Abhängigkeitsgraphen
Die Dokumentation zum locking spricht immer von Datenbank-Dateien. Daher gehe ich davon aus, dass ich die Ausgangsdaten bzw. Zwischenergebnisse überall gleichzeitig einbinden kann, da diese nur gelesen werden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
- af0815
- Lazarusforum e. V.
- Beiträge: 6763
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: In-Memory Datenbank -- Speicherdurchsatz?
Hier Memory Limits for Windows Releases die Infos von MS zu den Speicherlimits.Socke hat geschrieben:Ich glaube einfach, dass die SQLite3.exe für Win32 nicht mit mehr als 2 GB RAM umgehen kann. Es werden nämlich maximal 3 Queries ausgeführt. Lazarus/Free Pascal habe ich in meinen Tests bisher noch gar nicht verwendet.marcov hat geschrieben:Hört sich mehr an als ein Programmierfehler. E.g. ein pro query alloziertes Object (object von SQLite, nicht Lazarus) das nicht richtig freigegeben wird. zb transaction context oder so.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: In-Memory Datenbank -- Speicherdurchsatz?
Dass Windows (hier: Windows 7, 64 bit) meine 8 GB RAM ansprechen kann und darf, weiß ich; Neben diesem Limit gibt es aber noch die Begrenzung durch 32-Bit-Programmdateien, die auch unter Windows-64-Bit maximal 4 GB Speicher verarbeiten können. Bei diesen muss aber noch ein Flag in der Programmdatei gesetzt sein, damit Windows diesen auch wirklich bis zu 4 GB RAM zuweist; ansonsten ist schon bei 2 GB Schluss (das kommt davon, wenn man Zeiger in vorzeichenbehafteten Typen speichert und das höchstwertige Bit nicht verwendet).af0815 hat geschrieben:Hier Memory Limits for Windows Releases die Infos von MS zu den Speicherlimits.
Daher habe ich mir gerade SQLite3 für Windows 64 Bit gebaut. Damit werde ich als nächstes testen, wie viel Arbeitsspeicher nach 31 Stunden belegt sind

Im Anhang findet ihr SQLite3 Version 3.7.10 für Windwox x64_86 (Win64). -- Für alle, die danach suchen. Lizenz lasse ich bei Public Domain; Gewährleistungen sind bis auf das absolute gesetzliche Minimum ausgeschlossen. Im Zweifelsfall bitte selber bauen.
- Dateianhänge
-
sqlite3_3.7.10-x64_86.zip
- SQLite3 für Windows 64 Bit (Bibliothek und Shell)
- (330.22 KiB) 96-mal heruntergeladen
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: In-Memory Datenbank -- Speicherdurchsatz?
Test abgeschlossen: bei 2 GB war wieder Schluss. Jetzt lasse ich das ganze mal mit einer Datei-Datenbank arbeiten.Socke hat geschrieben:Daher habe ich mir gerade SQLite3 für Windows 64 Bit gebaut. Damit werde ich als nächstes testen, wie viel Arbeitsspeicher nach 31 Stunden belegt sind
[Edit]
Test Abgeschlossen. Die Berechnung war nach etwa 32 Stunden fertig -- also nicht wesentlich mehr als in-memory. Tatsächlich war es auch kein Problem, die fertige Datenbank wieder komplett in den Speicher zu laden.
Immerhin habe ich mit den Statistiken (Fullscan und Autoindex) ein Argument, warum die bisherige Datenbank technologische Schwächen hat.
[/Edit]
Ich habe da auch noch einen interessanten Link gefunden, wie sich SQLite bei großen Datenbankdateien verhält: http://stackoverflow.com/questions/7841 ... abase-file" onclick="window.open(this.href);return false;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein