[gelöst] -- DbLog - useCommand "vacuum" nonblocking?

Begonnen von Frank_Huber, 03 März 2018, 11:09:01

Vorheriges Thema - Nächstes Thema

Frank_Huber

Mahlzeit,

gibt es eine Möglichkeit User-commands innerhalb DbLog non-blocking auszuführen?
bei meiner Wöchentlichen automatischen Bereinigung führe ich auch ein "VACUUM;" aus. während dieses läuft ist FHEM blockiert.
wäre mir angenehmer wenn es nonblocking machbar wäre. :-)

Danke & Grüße
Frank

DS_Starter

Hallo Frank,

ja gibt es.
Nutze dafür DbRep. Es gibt dort sogar ein Kommando " set <DbRep> vacuum" speziell für diesen Zweck.

vacuum
- optimiert die Tabellen in der angeschlossenen Datenbank (SQLite, PostgreSQL).
Vor und nach der Optimierung kann ein FHEM-Kommando ausgeführt werden. (siehe Attribute "executeBeforeProc", "executeAfterProc")

    Hinweis:
    Obwohl die Funktion selbst non-blocking ausgelegt ist, muß das zugeordnete DbLog-Device im asynchronen Modus betrieben werden um ein Blockieren von FHEM zu vermeiden.

setze dir zum Beispiel die Attribute:


executeAfterProc set <DbLog-Device> reopen
executeBeforeProc set <DbLog-Device> reopen 3600


Das verhindert das DbLog während der Optimierungsphase versucht Werte in die DB zu schreiben was zu Fehlermeldungen führt.

Grüße,
Heiko
ESXi@NUC+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

Frank_Huber

Danke Heiko!

Das DbRep Modul muss ich mir mal genauer anschauen. das kann wohl richtig viel mittlerweile. :-)
Der Tipp mit dem reopen klingt auch sinnvoll!

Thema gelöst. :-)