[Gelöst] Strategie(n) für einen Neuanfang mit configDB

Begonnen von waschbaerbauch, 06 Oktober 2016, 12:17:44

Vorheriges Thema - Nächstes Thema

waschbaerbauch

Hallo zusammen,

eigentlich läuft meine Hausautomation ganz gut, aber meine configDB.db  hat mittlerweile eine Dimension von 1,5GB angenommen.
Die Größe der configDB.db verzögert immens die Neustart-Zeiten und ggf. die generellen Antwortzeiten.

Ein configDB info bringt auch nach 15 Minuten kein Ergebnis bis auf ein 'Warten auf ...'

Die Filelist erscheint mir auch relativ übersichtlich:
Files found in database:
------------------------------------------------------------
./FHEM/FhemUtils/uniqueID
./FHEM/template.layout
./log/eventTypes.txt
./www/gplot/Luftdruck_Stade.gplot
./www/gplot/SVG_FL_MeinWetter_1.gplot
./www/gplot/SVG_FileLog_CUL_HM_HM_ES_PMSw1_Pl_2E0E0A_Pwr_1.gplot
./www/gplot/SVG_FileLog_CUL_HM_HM_WDS100_C6_O_29A9BC_1.gplot
./www/gplot/SVG_FileLog_CUL_HM_HM_WDS100_C6_O_29A9BC_2.gplot
./www/gplot/SVG_FileLog_CUL_HM_HM_WDS100_C6_O_29A9BC_3.gplot
./www/gplot/SVG_FileLog_CUL_HM_HM_WDS100_C6_O_29A9BC_4.gplot
./www/gplot/SVG_FileLog_CUL_HM_HM_WDS100_C6_O_29A9BC_5.gplot
./www/gplot/SVG_FileLog_CUL_HM_HM_WDS100_C6_O_29A9BC_6.gplot
./www/gplot/SVG_FileLog_PCA301.02_1.gplot
./www/gplot/SVG_FileLog_PCA301.04_1.gplot
./www/gplot/SVG_FileLog_PCA301.05_1.gplot
./www/gplot/SVG_FileLog_PCA301.07_1.gplot
./www/gplot/SVG_FileLog_PCA301.09_1.gplot
./www/gplot/SVG_FileLog_PCA301.11_1.gplot
./www/gplot/SVG_FileLog_PCA301.11_2.gplot
./www/gplot/SVG_FileLog_PCA301.13_1.gplot
./www/gplot/SVG_FileLog_PCA301.14_1.gplot
./www/gplot/SVG_FileLog_PCA301.16_1.gplot
./www/gplot/SVG_FileLog_PCA301.18_1.gplot
./www/gplot/SVG_FileLog_PCA301.19_1.gplot
./www/gplot/SVG_FileLog_PCA301.22_1.gplot
./www/gplot/SVG_FileLog_PCA301.25_1.gplot
./www/gplot/SVG_FileLog_PCA301.27_1.gplot
./www/gplot/SVG_FileLog_PCA301.28_1.gplot
./www/gplot/SVG_FileLog_PCA301.29_1.gplot
./www/gplot/SVG_FileLog_TFA.01_1.gplot
./www/gplot/SVG_FileLog_TFA.02_1.gplot
./www/gplot/SVG_FileLog_TFA.03_1.gplot
./www/gplot/SVG_FileLog_TFA.04_1.gplot
./www/gplot/SVG_FileLog_TFA.05_1.gplot
./www/gplot/SVG_FileLog_TFA.06_1.gplot
./www/gplot/SVG_FileLog_TFA.07_1.gplot
./www/gplot/SVG_FileLog_TFA.08_1.gplot
./www/gplot/SVG_FileLog_TFA.09_1.gplot
./www/gplot/SVG_FileLog_TFA.10_1.gplot
./www/gplot/SVG_FileLog_TS469L_1.gplot
./www/gplot/SVG_FileLog_TX25IT.01_1.gplot
./www/gplot/SVG_FileLog_Zisterne.01_1.gplot
./www/gplot/SVG_FileLog_Zisterne.02_1.gplot
./www/gplot/SVG_Hideki_30_1.gplot
./www/gplot/Weblink_Stade_Temperatur.gplot
./www/gplot/Weblink_Wind_Stade.gplot
./www/gplot/template.gplot
./www/gplot/templateDB.gplot


Da ich überlege eine neue Installation in einer virtuellen Maschine mit der aktuellen Ubuntu Version vorzunehmen würde ich gerne wissen ob man diesen Zustand mit der riesigen configDB.db in Zukunft vermeiden oder ob man ggf. sogar die aktuelle 'ausmisten' kann. Da ich keine Ahnung habe wie man mit Datenbanken umgeht wäre ich für eine kurze Anleitung diesbezüglich dankbar.

Gruß Mario

Benni


waschbaerbauch

Danke für den Link Benni - ich werde mich mal mit den 'max versions' beschäftigen. Änderungen habe ich hier im Laufe des Einsatzes natürlich eine Menge vorgenommen, vielleicht schafft das Abhilfe. In der commandref hatte ich schon das attribut reorg gesehen, war mir aber nicht sicher ob ich damit am richtigen Ende anpacke.

waschbaerbauch

Nachdem ich zuerst ein reorg mit 10 und nun mit 5 ausgeführt habe kann ich den Befehl configdb info ausführen und bekomme auch zügig ein Ergebnis. Die configDB.db auf dem Datenträger ist allerdings immer noch mit 1.6GB angegeben. Ich gehe mal davon aus, das die Versionen aus der Datenbank entfernt wurden, aber wie bekomme ich es nun hin diesen ungenutzten Speicherplatz wieder frei zu geben bzw. die Dateigröße der configDB.db auf ihre wahre Größe im Dateisystem zu reduzieren?

kumue

ich denke, da hilft der vacuum befehl weiter...

waschbaerbauch

#5
Dazu habe ich in der commandref nur folgendes gefunden:
Create an empty database, e.g. with sqlite3:
mba:fhem udo$ sqlite3 configDB.db

SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> pragma auto_vacuum=2;
sqlite> .quit


Wenn ich nun ins /opt/fhem Verzeichnis wechsle und sudo sqlite3 configDB.db öffne und den Befehl absetzen, dann passiert für mich sichtbar nichts. Mach ich da etwas verkehrt?

Edit: Jetzt hab ich mal ohne genaues Wissen was ich da eigentlich mache als Befehlt stumpf 'vacuum;' eingegeben. Auf einen Schlag ist die configDB.db nur noch 3,5MB groß  :o

kumue


waschbaerbauch

#7
Danke, hatte ich grad ;)

Wie schon gesagt habe ich von Datenbanken keine Ahnung oder nur sehr sehr wenig, aber nach und nach versuche ich mich da zu bessern :)

PS: Der Neustart (shutdown restart) dauert jetzt nur noch ~1,5Minuten, das Starten hat vorher deutlich mehr Zeit in Anspruch genommen.

Benni

Zitat von: waschbaerbauch am 06 Oktober 2016, 14:26:03
   sqlite> pragma auto_vacuum=2;

Wenn ich es richtig im Hinterkopf habe, muss das auto_vacuum pragma tatsächlich direkt nach dem erstellen der Datenbank gesetzt werden, damit es tatsächlich automatisch funktioniert. Später geht es glaube ich nicht mehr.

Habe eben doch noch schnell nachgeschaut .... und ja, es ist so wie ich oben geschrieben habe:

Zitat
Auto-vacuuming is only possible if the database stores some additional information that allows each database page to be traced backwards to its referrer. Therefore, auto-vacuuming must be turned on before any tables are created. It is not possible to enable or disable auto-vacuum after a table has been created.