DBLog - Historische Werte ausdünnen

Begonnen von C0mmanda, 14 September 2015, 18:38:21

Vorheriges Thema - Nächstes Thema

Sailor

Hallo Claudiu

Zitat von: rapster am 30 September 2015, 11:43:25
Was hast du denn für eine Datenbank, SQLITE?

Bei SQLITE zumindest musst du, falls du eine kleinere Datei willst, noch manuell VACUUM; ausführen.

Correct. Was anderes bleibt mir auf dem RasPi nicht.

Kannst du mir den "set myDbLog userCommand ..." dafuer geben.  ???

Ich habs nicht so mit SQL Befehlssaetzen. ;D

Danke

Gruss
    Sailor
******************************
Man wird immer besser...

Sunny

Moin Sailor,

hatte Claudiu Dir schon geschrieben:  ;)
set myDbLog userCommand VACUUM

Viele Grüße
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

Sailor

Hallo Sunny

Zitat von: Sunny am 30 September 2015, 12:12:05
hatte Claudiu Dir schon geschrieben:  ;)
set myDbLog userCommand VACUUM

OK 1:0 fuer Dich?

Leider war der Befehl mal wieder gut fuer einen fhem - Absturz erster Sahne  >:(

Diesmal hats fuer den Absturz aber nicht so lange gebraucht... Immerhin schon mal ein Fortschritt!  ;D

Gruss
    Sailor
******************************
Man wird immer besser...

Sunny

Moin Sailor,

Zitat von: Sailor am 30 September 2015, 12:40:43
OK 1:0 fuer Dich?
Dies war und ist nicht meine Intension... ;D

Läuft Dein RPi mit einer USB-HDD ?

Falls ja, könntest Du ja mal testen, ob eine Erweiterung der Swap-Datei Dir eventuell weiterhilft.
z.B.:http://jankarres.de/2012/11/raspberry-pi-swap-erweitern/

Habe damit selber aber noch keine Erfahrung.

Viele Grüße
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

ronny332

Zitat von: Sailor am 30 September 2015, 12:40:43
Hallo Sunny

OK 1:0 fuer Dich?

Leider war der Befehl mal wieder gut fuer einen fhem - Absturz erster Sahne  >:(

Diesmal hats fuer den Absturz aber nicht so lange gebraucht... Immerhin schon mal ein Fortschritt!  ;D

Gruss
    Sailor

Du kannst auch das Kommando direkt vom Terminal aus starten, genauso wie ich es mit cron jobs nachts auf meinen MySQL Server mache. Ich denke es muss nicht unbedingt Aufgabe von FHEM sein reine Datenbank Abfragen zu handeln. Eine Blockierung von FHEM wirst du aber auch von der Konsolenseite nicht komplett vermeiden können, was je nach Modul sicherlich auch zum Absturz führen kann.
Ein beendetes FHEM zzgl. eines Aufräum Kommandos sollte allerdings auch im Problemfall relativ gute Ergebnisse liefern können.
... Homematic Flüchtling und Freund der neu gewonnen Fhem-Freiheiten.

rapster

Hallo Zusammen,

habe nun reduceLog nach Rücksprache mit dem Modul Maintainer ins svn eingecheckt.

Ab Morgen früh wird die Funktion über das Fhem-Update verteilt.

Gruß
  Claudiu

C0mmanda

Zitat von: rapster am 01 Oktober 2015, 17:51:08
Hallo Zusammen,

habe nun reduceLog nach Rücksprache mit dem Modul Maintainer ins svn eingecheckt.

Ab Morgen früh wird die Funktion über das Fhem-Update verteilt.

Gruß
  Claudiu

Großartig! :)

Sunny

Moin Claudiu,

freut mich, das Deine Arbeit "gewürdigt" wurde und jetzt auch ein Teil von FHEM ist.  8)

Bin schon gespannt auf das, was Dir noch so einfällt...   ;)

DANKE für Deine Zeit & viele Grüße
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

Sailor

So jetzt aber,

1) fhem runtergefahren
2) Den VACUUM Befehl von der Konsole aus gestartet
3) 13h gewartet
4) fhem.db wurde um 1,5 GB reduziert
5) fhem neu gestartet

So weit so gut. Jetzt wollen wir mal sehen wa passiert wenn wir die verbleibenden 100 Tage stundenweise reduzieren...

Gruss
    Sailor
******************************
Man wird immer besser...

rapster

13 Stunden hört sich nach DbLog@SD-Karte an :-)

Ich bin gespannt ;)

Gruß
  Claudiu

jove01

Hallo
mit Interesse habe ich diese Diskussion gelesen und bin dabkbar für die neuen Möglichkeiten, die Datenbank zu reduzieren.

Ich habe als Laie aber Verständnisfragen, die ich aus der Diskussion nicht beantworten konnte

1. Was ist der Unterschied zwischen deleteOldDays und reduceLog (ohe Parameter) ?

2. Nach der Reduzierung sollte immer ein "set myDbLog userCommand VACUUM" erfolgen ?

3. Weitere Befehle sind nicht erforderlich, um FHEMDB zu reduzieren

4. Beide set-Kommandos können in einem "at" als auszuführende Befehle stehen ?

Übrigen, der Hinweis auf
Zitatpragma auto_vacuum=2
steht nur in der fhem.pl reference unter "configdb" und nicht bei fhemdb. Ebenso steht dort leider nicht der Hinweis, dass dies nur beim Anlegen einer neuen Tabelle möglich ist.


Danke für die Geduld mit einem Laien

Jürgen
Aktuelles FHEM auf Raspi 3 und dbLog
CUL 433
HMLan Rolladensteuerung

rapster

#131
1. deleteOldDays schneided die DB nach den gegebenen Tagen ab, reduceLog lässt bei älteren Einträgen jeweils einen Eintrag pro Stunde je device:reading zurück.

2. Bei der ersten Reduzierung einer großen Menge kann man das machen, wenn reduceLog regelmäßig aufgerufen wird (bei mir z.B. täglich) ist es nicht notwendig, da davon ausgegangen werden kann dass der Speicherplatz der bereits einmal verwendet wurde wieder benötigt wird.

3. Ich würde empfehlen reducelog immer mit dem parameter "average" aufzurufen, da hierdurch die zurückbleibenden Daten genauer sind, und auch bei einer nachträglich average=day Berechnung das korrekte Ergebnis berechnet wird.
Die Bereinigung ist allerdings etwas Ressourcenintensiver.
Allerdings wird durch die average Werte auch weniger Speicherplatz verwendet, da der 'EVENT' Column verkleinert wird.

4. Wie bereits geschrieben, würde ich vacuum wenn überhaupt nur bei der ersten "Grundreinigung" ausführen, anschließend ist vacuum nicht notwendig.
Zu beachten ist das vacuum immer die gesamte Datenbank auf dem Datenträger kopieren muss um sie zu verkleinern, und fhem während dessen nicht mit der Datenbank arbeiten kann.

Gruß
  Claudiu

jove01

Hallo Claudiu

das nenne ich eine schnelle und klasse Antwort. :)

man könnte also, so man es möchte, im mittelfristigen Bereich average und dann nochmals im lanfristigen Bereich average=day ausführen ?

Danke

Aktuelles FHEM auf Raspi 3 und dbLog
CUL 433
HMLan Rolladensteuerung

rapster

Ja, genau so ist es gedacht, habe ich schonmal hier versucht zu beschreiben: http://forum.fhem.de/index.php/topic,41089.msg334617.html#msg334617

Zitat von: rapster am 19 September 2015, 19:45:09
average=day ist auch nachträglich möglich, somit kann man sich z.B. ein Konstrukt bauen welches
- jeden record der letzten 2 Wochen behält
- nurnoch 1 record pro Stunde des letzten Jahres behält (optional mit Mittelwert)
- nur den Tages-Mittelwert der letzten 10 Jahre behält

franky08

Hallo rapster, hatte heute mal vor meine sqlite fhem DB aufzuräumen. Da fhem für die Zeit des Aufräumens blockiert, möchte das bei runtergefahrenen fhem machen.
Meine Frage (so fit bin ich mit Datenbanken nicht) wie sieht das Statement für sqLite aus um die DB auszudünnen (mit dem Äquivalent zu average, ausgeführt direkt in der DB.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1