Einzelnen Beitrag anzeigen

Monday

Registriert seit: 24. Aug 2012
103 Beiträge
 
FreePascal / Lazarus
 
#10

AW: SQLite 3 Out of Memory

  Alt 21. Mai 2020, 11:09
Hallo

Ich habe jetzt etwas herumgetüfftelt.

Zuerst hatte ich das Windows Temp Verzeichnis geändert. Das war wirkungslos.

Danach habe ich PRAGMA temp_store_directory = 'D:\...'; gesetzt. Auch das blieb wirkungslos.
Ich hatte allerdings dazu einen SQL Editor (SQLStudio) verwendet und auch über die Anwendung versucht. Bei beiden hat er trotzdem vacuum auf Laufwerk C angewendet.

Erst nachdem ich über die SQL Shell gegangen bin hat er das Verzeichnis angenommen!
Dann lief auch Vacuum schön und in aller Kürze durch. Die DB war nach vacuum um 90 % kleiner!
Sollte mal der Festplattenspeicher nicht ausreichen, ist es also denkbar einen USB Stick oder externe Festplatte dran zu hängen und dann über den Festplattenspeicher zu bewerkstelligen. Habe gesehen, man kann auch einstellen dass es rein über den Arbeitsspeicher geht. Wenn die SQL Datei klein genug ist, wäre es sogar denkbar es komplett über den Arbeitsspeicher zu machen. Man muss daran denken, dass er aber immer die komplette Datei laden will.


Da ich schon fast die Hoffnung aufgegeben hatte, wollte ich eine neue DB erstellen. Und die Daten mittels export/import neu erstellen. Mit dem SQLStudio und SQL Administrator lief der export/import schleppend langsam. Mit der SQL Shell lief es rasent schnell durch.
Spontan würde ich sagen, wenn man große DB über 100 MB hat, ist es wohl am schnellsten wenn man immer über die Shell arbeitet.

Eine SQlite Shell GUI wäre noch nice.

Indizes erstellt er offenbar immer über Laufwerk C. Allein über die Shell wenn ich mit PRAGMA temp_store_directory = 'D:\...'; nimmt er das Laufwerk an. Ich hatte gehofft, einmal temp_store_directory zu setzen und dann ist es standartmäßig. Aber das muss ich wohl immer setzen, wenn ich es brauche.


Ich hatte auch in der Doku nachgesehen wo die Grenzen und Limits liegen; Weil ich dachte das es hier limits gibt. Ich habe gesehen SQL kann durchaus mit 3-4 stelligen Terabyte umgehen.

LG
Monday
  Mit Zitat antworten Zitat