NEWS
[Aufruf] Dringender Test sql 1.6.4
-
Ja das liegt an SQLite, Die kann immer nur eine Anfrage abarbeiten und ist daher (und auch aus anderen gründen) nur für nicht so viele Datenpunkte geeignet.
Und ja der Start schreibt den aktuellen Wert überall rein.
Du könntest mal versuchen das Limit höher zu setzen. Wenn Du das versuchen willst mach mal /opt/iobroker/node_modules/iobroker.sql/main.js in einem editor auf. und suche dort nach der Meldung. Gibts mehrfach. Ist immer so grob bei:
if (!multiRequests) { if (tasks.length > 100) { adapter.log.error('Cannot queue new requests, because more than 100');Da musst Du das 100 mal durch was anderes tauschen, also 500 oder 1000 :-)
Interessant wäre da vorher/nachher mal Speicherverbrauch und sowas zu vergleichen.
Eine Alternative wäre noch bei SQLite dieses Initiale Schreiben zu verhindern … Denke das ist eher noch "the way to go".
1.7.2 vom SQL Adapter vom Github schaltet WriteNulls bei SQLite automatisch aus
-
Du könntest mal versuchen das Limit höher zu setzen. Wenn Du das versuchen willst mach mal /opt/iobroker/node_modules/iobroker.sql/main.js in einem editor auf. und suche dort nach der Meldung. Gibts mehrfach. Ist immer so grob bei:
if (!multiRequests) { if (tasks.length > 100) { adapter.log.error('Cannot queue new requests, because more than 100');Da musst Du das 100 mal durch was anderes tauschen, also 500 oder 1000 :-)
Interessant wäre da vorher/nachher mal Speicherverbrauch und sowas zu vergleichen. `
Ich werde es bei Gelegenheit mal versuchen, allerdings war die DB wohl teilweise auch schon überfordert beim Neustart.
2018-03-24 09:48:11.319 - error: sql.0 Cannot queue new requests, because more than 100 2018-03-24 09:48:11.428 - error: sql.0 Cannot select SELECT id, type, name FROM datapoints WHERE name='harmony.0.fox.activities.Anzeige-Netflix';: Error: SQLITE_BUSY: database is locked 2018-03-24 09:48:11.430 - warn: sql.0 Cannot get index of "harmony.0.fox.activities.Anzeige-Netflix": Error: SQLITE_BUSY: database is lockedEine Alternative wäre noch bei SQLite dieses Initiale Schreiben zu verhindern … Denke das ist eher noch "the way to go". `
Das habe ich jetzt erst mal so gemacht. Danke - war mir nicht sicher ob ich das mit den NULL-Werten bei Start/Stop schreiben richtig interpretiert hatte. :D
-
Ich weiss aber das es sonderlogik für "Duplicates" gibt die das ganze mit +1ms Timestamp nochmals schreibt. Die ist schon ewig drin … `
Die Werte doppelt in die Datenbank zu schreiben ist aber auch nicht wirklich sehr Resourcen schonend.