93_DbLog - Umstellung Log-Funktion auf non-blocking

Begonnen von DS_Starter, 18 Dezember 2016, 20:03:56

Vorheriges Thema - Nächstes Thema

stromer-12

#315
Zitat von: JoeALLb am 14 Januar 2017, 18:17:45
Ein Insert ist mit index langsamer, nicht schneller. Das Update macht zwar einen Full-Table-Scan, der ist abe rbei kleinen Tabellen nicht langsamer als mit index.
Wieviele Datensätze hat deine Current-Tabelle denn?

Wenn Du experimentierfreudig bist wäre dieser Test spannend:

1. Lege einen Primary Key an, der doppelte Datensätze verhindert
ALTER TABLE `current` ADD INDEX `pri` (`TIMESTAMP`, `DEVICE`, `READING`);

2.
In Zeile 943 die Zeile
$sth_ic = $dbhp->prepare("INSERT INTO current (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)");
in
$sth_ic = $dbhp->prepare("INSERT IGNORE INTO current (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)");
ändern und ab Zeile 947 dafür sorgen, dass direkt INSERT anstatt zuerst update ausgeführt wird.
Wenn Du den neuen asynchronen Modus nutzt,  befinden sich die benötigten Zeilen weiter unten im Modul.
Dies sollte eigentlich deutlich flotter sein.... aber getestet habe ich es nie, da ich CURRENT nicht nutze.

(Edith: DbLog Version 2.9.1)

Ich habe jetzt bei mir in der Tabelle Current eine Primarindex auf Device und Reading angelegt.
Sowie in der DbLog in Zeile 947 und 1213 ein ON DUPLICATE KEY UPDATE DEVICE = VALUES(DEVICE), READING = VALUES(READING)
an den INSERT angefügt, mehr nicht.

Damit werden in der Current keine dopperlten Device+Reading Einträge mehr erzeugt und ich erhalte keine Fehlermeldung.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

JoeALLb

Hallo Heiko,

Zitat von: DS_Starter am 15 Januar 2017, 14:44:57
du hast doch auch keine Sorgen mit den SVG's bzw. Vorschauwerten nehme ich an ?

Nein, bei mir alles gut! Daher interessiert mich die Info aus "show preprocessed imput", denn dann sieht man ob das Modul DbLog alle Daten liefert.
Wenn es alle Daten liefert, könnte eben ein Fehler in der Anzeige sein, also im svg.js oder anderen Modulen, die in letzter Zeit auch aktualisiert wurden.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

chris1284

#317
Zitat von: JoeALLb am 15 Januar 2017, 14:38:21
Ist das reproduzierbar?
ja.

Zitat"show preprocessed imput" klickts, kommen da sämtliche Daten oder sind dort die Lücken ebenfalls vorhanden?
alle daten da.
das lustige ist: im room ist der plot unvollständig (mal stopt zb nur der hum-graph , mal der temp). das wechselt dann zwischen den plots je öfter man refreshed.
in der ploteditor ansicht werden die graphen weiter gezeichnet

schalte ich plotfork aus, gehts. offenbar kommt irgendwas damit nicht klar

DS_Starter

Hallo Chris,

ich habe die aktuelle Version mit und ohne plotfork hoch und runter probiert und keinerlei Probleme mit Plots oder Vorschauenwerten festgestellt.
Hmm ... Browsercache mal geleert ?


Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter


JoeALLb

#320
Ich könnte mir vorstellen, dass die Anzeige der Plots, und nicht unbedingt DbLog daran "schuld" ist...

Ich hatte es gerade in einem Test jedoch geschafft, dass mein ganzes System nicht mehr funktionierte. Es lies sich nicht mehr starten,
ohne nennenswerte Logeinträge.
Geholfen hat letztlich nur ein revert der fhem.pl auf den Stand von gestern...

Da ich jetzt weg muss, kann ich es leider nicht mehr detailierter testen, aber in diesem Modul hat
heute bisher alles funktioniert!

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DS_Starter

Hallo Chris,

kann die Feststellung von Joe auch bestätigen ... funktioniert bei mir alles bestens.
Trotzdem ... bitte teste nochmal die V2.9 aus #265, wie es mit der ausieht. Da hatte ich die MySQL-Meldung erledigt die versch. User hatten.
Danach kamen nur kleine Ergänzungen.

Und deine Daten sind ja auch alle da. Das Logging ist also auch ok.....
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

chris1284


stromer-12

Ich habe das mal so eingebaut mit IGNORE, da wird das Log mit
2017.01.15 17:51:14.282 2: DbLog myDbLog -> Failed to insert into current: ...
geflutet.


Zitat von: JoeALLb am 14 Januar 2017, 18:17:45
Ein Insert ist mit index langsamer, nicht schneller. Das Update macht zwar einen Full-Table-Scan, der ist abe rbei kleinen Tabellen nicht langsamer als mit index.
Wieviele Datensätze hat deine Current-Tabelle denn?

Wenn Du experimentierfreudig bist wäre dieser Test spannend:

1. Lege einen Primary Key an, der doppelte Datensätze verhindert
ALTER TABLE `current` ADD INDEX `pri` (`TIMESTAMP`, `DEVICE`, `READING`);

2.
In Zeile 943 die Zeile
$sth_ic = $dbhp->prepare("INSERT INTO current (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)");
in
$sth_ic = $dbhp->prepare("INSERT IGNORE INTO current (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)");
ändern und ab Zeile 947 dafür sorgen, dass direkt INSERT anstatt zuerst update ausgeführt wird.
Wenn Du den neuen asynchronen Modus nutzt,  befinden sich die benötigten Zeilen weiter unten im Modul.
Dies sollte eigentlich deutlich flotter sein.... aber getestet habe ich es nie, da ich CURRENT nicht nutze.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

DS_Starter

Hallo Chris1284,

teste bitte die hier angehängte Version 93_DbLog_V2.9.2_Chris.
Ich habe sie bei mir allen mir möglichen Variatioen getestet und läuft nach wie vor einwandfrei mit MySQL.
Bitte schau die das unter SQLite an, ob das Problem bei dir weg ist.

Grüße
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

stromer-12

Zitat von: stromer-12 am 15 Januar 2017, 18:00:38
Ich habe das mal so eingebaut mit IGNORE, da wird das Log mit
2017.01.15 17:51:14.282 2: DbLog myDbLog -> Failed to insert into current: ...
geflutet.

Aber nur wenn bei einen commit ein neuer Datensatz mehrmals auftaucht, danach nicht mehr.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

chris1284

keine besserung. anbei mal ein screenshot der plots, danach einer nach einem einfachen f5 in paint neben den ersten gelegt. danach ein screen vom plot im detail (wo lles schick ist). im IE siehts genau so aus, auf allen tablets auch.
gehe ich zurück auf die alte version, alles top


DS_Starter

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter


DS_Starter

Jetzt habe ich aber alles so nach und nach zurückgedreht ....
Hats du eigentlich immer restartet ?  neme mal an ja.
Arbeitest du mit dem normalen synchronen Modus ?
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter