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