Hallo,
Kann mir jemand erklären, warum der Prozess von mariadb auf 100% geht, wenn ich DbLogType auf "Current/History" setze? Stelle ich auf nur "History", dümpelt der Prozess bei 0,x% rum. Die Hardware ist ein Odroid XU4 auf dem FHEM und mariadb laufen. Als Datenspeicher hängt eine SSD über USB3.0 dran. Es kommen bei den 100% auch öfters Meldungen im Log, das gerade ein Schreibvorgang pending ist und auf den nächsten async Lauf gewartet wird. Das verbose5 Log sieht nicht wesentlich anders aus, mit der einen oder anderen Einstellung. Das ist aber so viel, das ich es ungern hier anhängen möchte.
Internals:
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION /opt/fhem/db.conf
DEF /opt/fhem/db.conf .*:.*
MODE asynchronous
MODEL MYSQL
NAME logdb
NR 40
NTFY_ORDER 50-logdb
PID 31015
REGEXP .*:.*
STATE connected
TYPE DbLog
UTF8 0
VERSION 3.13.0
dbconn mysql:database=fhem;host=localhost;port=3306
dbuser fhemuser
HELPER:
COLSET 1
DEVICECOL 64
EVENTCOL 512
OLDSTATE connected
READINGCOL 64
TYPECOL 64
UNITCOL 32
VALUECOL 128
Helper:
DBLOG:
state:
logdb:
TIME 1552250829.11004
VALUE connected
READINGS:
2019-03-10 21:56:14 CacheUsage 20
2019-03-10 21:55:58 NextSync 2019-03-10 21:56:28 or if CacheUsage 500 reached
2019-03-10 21:55:58 state connected
cache:
index 43692
Attributes:
DbLogType History
asyncMode 1
room System
shutdownWait 2
Guten Morgen,
du hast vermutlich seeehr viele Einträge in der current-Tabelle. Check das mal z.B. im DbRep mit:
set ... countEntries current
Sollte es so sein lösche die mal alle bitte, z.B. auch mit DbRep:
set ... tableCurrentPurge
Ist die Tabelle leer würde ich empfehlen einen Primary Key anlegen:
ALTER TABLE `current` ADD PRIMARY KEY (`DEVICE`, `READING`) USING BTREE;
Das geht prinzipiell auch im DbRep mit:
set ... sqlCmd ALTER TABLE `current` ADD PRIMARY KEY (`DEVICE`, `READING`) USING BTREE;
Allerdings wird dem verwendeten DB User vermutlich das Recht fehlen. Dann entweder das "Alter"-Recht zuweisen oder das Ganze im SQL-Editor deiner Wahl als root-User ausführen.
Vermutlich wird die beschriebene Vorgehensweise dein Problem lösen, probiers mal.
Grüße,
Heiko