[vz-dev] Performance - Umstellung DB Schema

Andreas Götz cpuidle at gmail.com
Sun Oct 11 10:41:04 CEST 2015


Moin Volker,

> Am 10.10.2015 um 20:02 schrieb Volker <v.ty at gmx.de>:
> 
> Hallo Andreas,
> 
> ich habe mit git pull aktualisiert.

Ehrm. Welchen branch? Den des PRs? Falls nein hast Du's auch nicht getestet ;)

> Bei mir sieht das gut aus, bisher ist mir kein Problem aufgefallen. Zur Performance kann ich nur so viel sagen, dass meine 4 S0 Zähler die in Minutenabständen geloggt werden nie mehr als 2 Sekunden brauchen bis die Grafik angezeigt wird - egal welches Zeitintervall angezeigt wird (Frontend und SQL auf BananaPi). Also bei mir ist alles ok.

Ich habs jetzt einfach committed- git pull reicht ab jetzt- wenns Probleme geben sollte steh ich ja Gewehr bei Fuß.

> Gruß
> Volker

Schönen Sonntag, Euer Andreas 

> 
>> Am 09.10.2015 um 12:54 schrieb Andreas Goetz:
>> Hallo Zusammen,
>> 
>> erstmal sorry für den Sturm im Wasserglas. Ja, das DB-Schema ist nicht optimimal
>> für Performance, aber es ist auch kein riesen Drama! Mit
>> https://github.com/volkszaehler/volkszaehler.org/pull/334 hatte ich einen Fehler
>> behoben, damit aber leider auch Performance deutlich runter gezogen.
>> 
>> https://github.com/volkszaehler/volkszaehler.org/pull/360 macht das jetzt wieder
>> gut und bringt- kleines Goodie- noch ein paar Optimierungen mit die bei häufig
>> vorkommenden Anwendungsfällen nochmal 0,5-1s je Abfrage bringen.
>> 
>> Mir wärs trotzdem recht wenn ihr sorgfältig testen würdet, vor allem @Gernot und
>> @fostex die damit schon das ein oder andere Problem haben.
>> 
>> Wenns passt wär das dann aber auch die schnellste Version die wir jemals hatten!
>> 
>> Viele Grüße,
>> Andreas
>> 
>> 
>> 2015-10-05 15:48 GMT+02:00 Andreas Goetz <cpuidle at gmail.com
>> <mailto:cpuidle at gmail.com>>:
>> 
>>    Hi Jakob, all,
>> 
>>    2015-10-05 15:16 GMT+02:00 Jakob Hirsch <jh at plonk.de <mailto:jh at plonk.de>>:
>> 
>>        Hi!
>> 
>>        Andreas Goetz wrote on 2015-10-02 10:49:
>>        > ich beobachte aktuell ein paar Probleme mit der Performance bei Nutzung
>>        > der Aggregation Root Cause scheint darni zu bestehen dass alle Anfragen
>>        > auf die Aggregationstabelle ziemlich aufwändig Unix Timestamps (sec) in
>>        > VZ Timestamps (ms) hin- und herrechnen müssen.
>> 
>>        Diese "VZ"-Timestamps waren im Nachhinein wohl keine so gute Idee. Man
>>        brauchte aber sub-second-Auflösung und Javascript möchte die Timestamps
>>        sowieso in diesem Format. Ansonsten hätte man double oder so benutzen
>>        und jeden Wert multiplizieren müssen (in der Middlware beim GET oder im
>>        Frontend).
>> 
>> 
>>    Die Multiplikation vor/nach JSON tut gar nicht so weh- richtig weh tut dass
>>    wir zwischendurch beim Zugriff auf die Aggregationstabelle _alle_ Werte mit
>>    durchmultiplizieren müssen (Idee parken ;).
>> 
>>        > Wenn wir- das wäre der Vorschlag- unser DB Schema auf Unix Timestamps
>>        > umstellen können und auf Sekundenauflösung gehen dann würden wir eine
>> 
>>        Nein, damit gäbe es große Abweichungen bei der Leistung. Selbst wenn man
>>        nur einen Impuls alle 10 bis 11 Sekunden hat, wäre der Fehler im
>>        Extremfall 10%.
>> 
>> 
>>    Guter Punkt!
>> 
>> 
>>        Neuere MySQL/MariaDB-Versionen können aber auch timestamps mit
>>        fractional seconds, evt. wäre das eine bessere Lösung.
>> 
>> 
>>    Muss ich anschauen. Gibts das schon auf Jessie?
>> 
>>        > Für das API liesse sich das transparent halten oder- das wäre eigentlich
>> 
>>        Dann mußt du aber auch mit MUL/DIV arbeiten...
>> 
>> 
>>    Wie gesagt- einmalig tut das nichtmal weh.
>> 
>>        > mein Vorschlag- wir stellen auch das API auf Sekunden um. Der Change
>>        > würde die Kompatibilität von vzlogger bis zu jedem Client beeinflussen.
>> 
>>        Das ist m.E. bei der Menge an benutzen Clients (insbesondere der
>>        Net-IOs, auch wenn man die m.E. eher nicht benutzen sollte) ein no-go.
>> 
>> 
>>    Ok.
>> 
>>        Andere möglichkeit wäre eine Erweiterung der API: ts bleibt
>>        JS-timestamp, tsX (mit irgendwas sinnvollem für X) wären fractional.
>> 
>> 
>>    Ich überlege gerade:
>> 
>>    1) entweder... statt ms in der DB etwas mit Faktor 1024 zu speichern- dann
>>    könnte man wenigstens shiften statt zu rechnen
>>    2) gefällt mir grad sehr gut... in der Aggregate Tabelle noch eine TIMESTAMP
>>    Spalte hinzuzufügen.
>> 
>>    Bei 2) bliebe die Quellauflösung der Daten gleich und nur für besonders
>>    schnelle Abfragen, bei Bedarf auf auf Sekunden aggregiert, würden wir
>>    wirklcih allen Overhead rausnehmen.
>> 
>>    Das muss ich mir mal anschauen...
>> 
>>    Viele Grüße,
>>    Andreas
>> 
>> 
> 
> -- 
> Volker Troyke
> Homepage: www.troyke.de
> E-Mail  : v.ty at gmx.de
> 


More information about the volkszaehler-dev mailing list