[vz-users] HUGE performance improvement for grouped queries

Andreas Goetz cpuidle at gmail.com
Sun Oct 13 15:23:50 CEST 2013


Hallo Heiko & Rainer,

2013/10/13 Heiko Baumann <hbcs at gmx.de>

> vielen Dank für deinen tollen Ansatz. Ich würd mir das mal anschauen,
> check aber die "Installation" nicht so ganz.
>
> Du hast zwei Quellen angegeben:
> 1) https://github.com/andig/volkszaehler.org/tree/aggregate<https://github.com/andig/volkszaehler.org/tree/aggregate>
> 2)
> https://github.com/andig/volkszaehler.org/commit/b9440a5c058f79bdbb9bf84697d074e614c9f610
>
> Wie krieg ich das in meine vz-Installation integriert?
>

Du kannst den kompletten Tree nehmen- er ist auf Stand des original Gits.
Oder Du versuchst den Tree per git pull in Deine Installation zu
integrieren- bei Fehlern bist Du da aber auf die Git Profis angewiesen...

Und:
> 3) sehe ich das richtig, dass du die "originale" Data-Tabelle unberührt
> lässt?
>

Korrekt- die Originaldaten bleiben erhalten.


> 4) Was schreibst du in die neue Tabelle rein - nur die "deltas" zu einem
> festen Startwert oder absolute Werte?
>

In der aggregate Tabelle steht genau das was die MW auch bei Abfragen mit
group=xyz macht: Summen und Anzahl der Werte (sum(value) und count(value))
je Zeitperiode. Das funktioniert für alle Zählertypen zumindest im
Strombereich.

2013/10/13 Rainer Gauweiler <volkszaehler at moppl.inka.de>

Passiert das zusätzlich? Werden die Daten also dann doppelt gespeichert
> (was ich gut fände)?
>

Genau so ist es.

Damit das Frontend etwas davon hat wäre es jetzt spannend (und wirklich
einfach) noch Aggregation nach Stunden einzubauen und im FE eine Logik
einzubauen a'la if (to-from)/tuples > 1h then group=hour. Auf dem Weg
müsste auch die Datenbank deutlich weniger Records durchnudeln. Einen
sinnvollen Testfall habe ich allerdings nicht da ich nur 12 Werte je Kanal
und Stunde speichere- wer sowas sekündlich macht hat natürlich eher etwas
davon. Wer's braucht soll sich melden ;)

Letztlich: für das letzte Quäntchen Performance bräuchen wir nochmal einen
DB Experten der sich den Index der aggregate Tabelle anschaut. Ich habe das
Gefühl dass die Reihenfolge channel_id, aggregation type, timestamp nicht
ideal ist da aggregation type nur eine Handvoll Ausprägungen hat.

Jetzt viel Spass beim basteln, bin auf Eure Ergebnisse gespannt!

vg
Andreas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20131013/ce1b7048/attachment.html>


More information about the volkszaehler-users mailing list