DBLog - Historische Werte ausdünnen

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

Vorheriges Thema - Nächstes Thema

C0mmanda

Moin,

Habs geprüft und alle Werte von 00:xx:xx sind auch bei mir gelöscht! Doof, aber damit kann ich leben.
Mir geht es bei den Historischen Werten nur noch um die Plots und da wirkt sich das bei mir nicht aus.

Hätte ja auch immer ein Backup machen können schließlich ist die Funktion noch in Entwicklung.

Nur damit ich den Syntax richtig verstehe:

set <dblog> reduceLog 360 average=day
Würde von allen Werten älter als 360 Tage den Tagesdurchschnitt setzen? Alle jüngeren Werte bleiben unangetastet?

Danke.

grtz
C0mmanda

rapster

Richtig,
bei 360 würde jeder numerische Wert, bis zum 24.09.2014 auf den Tages-Mittel reduziert.
Am 25.09.2014 würden noch die vollen UTC Stunden zur aktuellen Uhrzeit auf den Stunden-Mittelwert reduziert, da <days> nicht vom Datum sondern von der Uhrzeit ausgeht und 'average=day', 'average' impliziert.
Der Rest bleibt unangetastet.

Gruß
  Claudiu

Sunny

Moin Claudiu,

Hut ab! Klasse was Du da erarbeitet hast.
Bin schon gespannt, wann es eingecheckt wird.
Heute Nacht, werden BPi und RPi, die Version von Heute mal testen...
Bin gespannt wie das Ergebnis ausschaut.

Hatte noch eine "596 MB (625.651.712 Bytes)" > mit INDEX ca. 800MB <
db zum testen mit dem BPi in Etappen auf 105 MB (110.684.160 Bytes) ins "VACUUM" geschickt.
Leider war der BPi mehrfach FHEM tot. Kann es ja demnächst noch mal mit der Heutigen Version testen.

Schönen Abend & bestem Dank
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

stromer-12

Für intensive DBlog abfragen nutze ich ein 2. Fhem.
Meine Datenbank hat mittlerweile über 35440000 Datensätze
in knapp 5,6GByte gespeichert.
Ein set dblog count braucht bei mir fast 3Minuten.
Wenn ich wieder zu Hause bin werde ich mal testen.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

C0mmanda

Heute nochmal das volle Programm getestet, average + average=day und es funktioniert einwandfrei!
Vor allem sehen die Jahresplots jetzt auch viel sauberer (glatter) aus.

Wirklich eine Super Leistung für die ich mich nur noch einmal bedanken kann!
Ich hoffe diese Klasse Erweiterung wird bald eingecheckt!

grtz
CmdA

DrJJ

Kann mir bitte einer sagen wie ich das ganze Installieren kann? Bin etwas verwirrt mit den 2 Dateien 93_DbLog.pm_reduceLog.patch und 93_DbLog.pm

rapster

@DrJJ
Die 93_DbLog.pm_reduceLog.patch ist nur für den Modul Maintainer (Tobias) gedacht um die Änderung in's Fhem-Update zu übernehmen.

Du musst lediglich die  93_DbLog.pm im /FHEM/ Verzeichniss ersetzen und einen Fhem-Neustart machen.

@C0mmanda
Super dass bei dir auch alles geklappt hat!
Da du ja mysql hast, wie lange hat average=day bei dir gebraucht?

@stromer-12
Bin schon gespannt wieviel Speicherplatz du dadurch einsparen kannst :)
Meine logDb ist leider noch nicht besonders alt, deswegen habe ich noch nicht die Datenflut um hier viel zu testen...



Gruß
  CLauidu

C0mmanda

Ich habe auch noch nicht die wahnsinnig große DB, daher waren es nicht sonderlich viele Werte:

Zitat2015.09.21 10:28:56 3: DbLog logdb: reduceLog requested.
2015.09.21 10:28:56 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 36 records of day: 2015-08-15
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-16
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-17
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-18
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-19
2015.09.21 10:28:57 3: DbLog logdb: reduceLog deleting 29 records of day: 2015-08-20
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (hourly-average) updating 12 records of day: 2015-08-20
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-20
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 36 records of day: 2015-08-15
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-16
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-17
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-18
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-19
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-20
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 5 records of day: 2015-08-04
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-05
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-06
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-07
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-08
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-09
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-10
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-11
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-12
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-13
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-14
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-15
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 21 records of day: 2015-08-16
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-17
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-18
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-19
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-20
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 10 records of day: 2015-08-01
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 12 records of day: 2015-08-02
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 7 records of day: 2015-08-03
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 15 records of day: 2015-08-04
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 44 records of day: 2015-08-05
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 44 records of day: 2015-08-06
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 44 records of day: 2015-08-07
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 45 records of day: 2015-08-08
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 57 records of day: 2015-08-09
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 55 records of day: 2015-08-10
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 57 records of day: 2015-08-11
2015.09.21 10:28:57 3: DbLog logdb: reduceLog deleting 4 records of day: 2015-08-12
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (hourly-average) updating 3 records of day: 2015-08-12
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 57 records of day: 2015-08-12
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 53 records of day: 2015-08-13
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 61 records of day: 2015-08-14
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 58 records of day: 2015-08-15
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 59 records of day: 2015-08-16
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 56 records of day: 2015-08-17
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 55 records of day: 2015-08-18
2015.09.21 10:28:57 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 57 records of day: 2015-08-19
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 58 records of day: 2015-08-20
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 36 records of day: 2015-08-15
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-16
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-17
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-18
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-19
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 66 records of day: 2015-08-20
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 4 records of day: 2015-08-04
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-05
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-06
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-07
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 20 records of day: 2015-08-08
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-09
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-10
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-11
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-12
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-13
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-14
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-15
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-16
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-17
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-18
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-19
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 1, deleting 22 records of day: 2015-08-20
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 4, deleting 24 records of day: 2015-07-31
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 4, deleting 28 records of day: 2015-08-01
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 4, deleting 24 records of day: 2015-07-31
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 4, deleting 96 records of day: 2015-08-01
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 4, deleting 88 records of day: 2015-08-02
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 4, deleting 88 records of day: 2015-08-03
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 6, deleting 94 records of day: 2015-08-04
2015.09.21 10:28:58 3: DbLog logdb: reduceLog deleting 54 records of day: 2015-08-05
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (hourly-average) updating 32 records of day: 2015-08-05
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 4, deleting 88 records of day: 2015-08-05
2015.09.21 10:28:58 3: DbLog logdb: reduceLog deleting 15 records of day: 2015-08-06
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (hourly-average) updating 9 records of day: 2015-08-06
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 5, deleting 91 records of day: 2015-08-06
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 6, deleting 101 records of day: 2015-08-07
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 6, deleting 92 records of day: 2015-08-08
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 5, deleting 110 records of day: 2015-08-09
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 6, deleting 121 records of day: 2015-08-10
2015.09.21 10:28:58 3: DbLog logdb: reduceLog (daily-average) updating 7, deleting 112 records of day: 2015-08-11
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 5, deleting 110 records of day: 2015-08-12
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 6, deleting 118 records of day: 2015-08-13
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 7, deleting 123 records of day: 2015-08-14
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 7, deleting 120 records of day: 2015-08-15
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 6, deleting 132 records of day: 2015-08-16
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 6, deleting 131 records of day: 2015-08-17
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 6, deleting 118 records of day: 2015-08-18
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 5, deleting 110 records of day: 2015-08-19
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 5, deleting 110 records of day: 2015-08-20
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 15 records of day: 2015-08-01
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 17 records of day: 2015-08-02
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 13 records of day: 2015-08-03
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 18 records of day: 2015-08-04
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 44 records of day: 2015-08-05
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 46 records of day: 2015-08-06
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 2, deleting 44 records of day: 2015-08-07
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 45 records of day: 2015-08-08
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 60 records of day: 2015-08-09
2015.09.21 10:28:59 3: DbLog logdb: reduceLog deleting 4 records of day: 2015-08-10
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (hourly-average) updating 2 records of day: 2015-08-10
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 52 records of day: 2015-08-10
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 56 records of day: 2015-08-11
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 55 records of day: 2015-08-12
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 55 records of day: 2015-08-13
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 54 records of day: 2015-08-14
2015.09.21 10:28:59 3: DbLog logdb: reduceLog deleting 10 records of day: 2015-08-15
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (hourly-average) updating 3 records of day: 2015-08-15
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 62 records of day: 2015-08-15
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 61 records of day: 2015-08-16
2015.09.21 10:28:59 3: DbLog logdb: reduceLog deleting 8 records of day: 2015-08-17
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (hourly-average) updating 3 records of day: 2015-08-17
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 55 records of day: 2015-08-17
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 52 records of day: 2015-08-18
2015.09.21 10:28:59 3: DbLog logdb: reduceLog (daily-average) updating 3, deleting 59 records of day: 2015-08-19

Das ganze hat insgesamt 2 Sekunden gedauert, also recht fix!

grtz

rapster

#38
Oha... oder besser Verdammt...!
Sorry, böser Schnitzer, das kommt davon wenn man sowas mit nur einem Datenbanksystem testet....

SQLITE gab mir die Werte sortiert nach TIMESTAMP zurück (obwohl das wahrscheinlich auch nur Glück war), die reduceLog funktion hat dies auch so erwartet.

Wie ich gerade an deiner Log Ausgabe und kurzer Recherche merke gibt MySQL (und SQLITE normalerweise auch) die Werte in einer undefinierten Reihenfolge zurück wenn man es nicht explizit anderst verlangt.

Bei dir wurde jetzt etwas völlig undefiniertes gemacht, ich kann ehrlich gesagt nichtmal sicher sagen ob das grundlegende aufräumen überhaupt richtig durchgeführt wurde (es sollte hier zumindest nichts "kaputt" gemacht worden sein, es könnten hier evtl. zu viele Werte in der DB zurückgeblieben sein),
allerdings kann meines erachtens die average keinesfalls richtig berechnet worden sein (Sie wurde mehrfach aus Teilabschnitten des Tages (bzw. der Stunden) berechnet, weswegen sich evtl. auch so ein glatter Plotverlauf ergeben hat).
Ich würde dir dringend empfehlen ein Backup der DB einzuspielen!
_________

Im Anhang von Post #28 habe ich eine aktuelle Version angehangen, wo dieses Problem behoben ist. > http://forum.fhem.de/index.php/topic,41089.msg334617.html#msg334617
Bitte teste es hiermit nochmal.

Gruß
  Claudiu

stromer-12

Ich habe mal einen Test angestartet mit einen leeren Durchlauf.
set myDbLog reduceLog 560 average
Dabei braucht die Routine auf meinen Cubietruck 265 Sekunden.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

rapster

Hi Stromer,

Ich hoffe mit der Version von heute 23:xx:xx Uhr, oder zumindest SQLITE? (Nicht dass dich der selbe Fehler wie C0mmanda trifft)

Was sagt das Reading "lastReduceLogResult" wieviel Zeilen bearbeitet wurden? Damit lässt sich dan die Zeit besser beurteilen :)

Gruß
  Claudiu


stromer-12

Ich habe mysql seit etwa März/April letzten Jahres.

2015.09.21 23:38:56 5: Cmd: >set myDbLog reduceLog 560 average<
2015.09.21 23:43:21 5: Triggering myDbLog (1 changes)
2015.09.21 23:43:21 5: Notify loop for myDbLog lastReduceLogResult: Rows processed: 0, deleted: 0, updated: 0
2015.09.21 23:43:21 1: Perfmon: possible freeze starting at 23:38:57, delay is 264.503
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

rapster

OK, dann hast du glück gehabt,

vor 560 Tagen hast du noch keine Einträge in der DB gehabt, deswegen hat reduceLog hier nichts unternommen.

Bitte bei MySQL UNBEDINGT (bei SQLITE sehr empfehlenswert) auf die letzte Version von reduceLog updaten, ansonsten werden bei average oder average=day höchstwahrscheinlich falsche Werte berechnet!

Warum diese lange Wartezeit allerdings ist seltsam, das einzige was in deinem Fall ausgeführt wurde war die select Abfrage.
Ich gehe davon aus dass du noch keinen INDEX angelegt hast? Dies könnte die Dauer erklären...

Gruß
  Claudiu

stromer-12

Mein Index:
mysql> SHOW INDEXES FROM history;
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table   | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| history |          1 | Search_Idx |            1 | DEVICE      | A         |          18 |     NULL | NULL   | YES  | BTREE      |         |               |
| history |          1 | Search_Idx |            2 | READING     | A         |          18 |     NULL | NULL   | YES  | BTREE      |         |               |
| history |          1 | Search_Idx |            3 | TIMESTAMP   | A         |    35895919 |     NULL | NULL   |      | BTREE      |         |               |
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

rapster

#44
Ok, das ist der default index von DbLog, reducelog benötigt (allerdings erst später wenn wirklich etwas gelöscht wird) noch einen weiteren.

Das einzige Zeitintensive was in deinem Leerlauf-Test gemacht wird ist dieser SQL-Befehl:
SELECT TIMESTAMP,DEVICE,EVENT,READING,VALUE FROM history WHERE TIMESTAMP < DATE_SUB(CURDATE(),INTERVAL 560 DAY) ORDER BY TIMESTAMP ASC
Anschließend endet die Funktion fast sofort falls keine Werte zurückgeliefert werden.

Du kannst es ja mal direkt mit
SELECT count(*) FROM history WHERE TIMESTAMP < DATE_SUB(CURDATE(),INTERVAL 560 DAY) ORDER BY TIMESTAMP ASC
ausprobieren, ob du hier einen genauso hohen delay hast.

EDIT: Bin zwar kein MySQL Profi, denke allerdings dein Index wird bei dieser SQL abfrage nie verwendet, da TIMESTAMP in der sequence nur an dritter Stelle steht (und wenn er verwendet würde wäre er ziemlich langsam).
Der empfohlene reduceLog index setzt TIMESTAMP u.a. an erster Position des Index, und sollte somit auch bei dieser SELECT Abfrage helfen.