Nachdem ich heute erfolgreich von MAriaDB zurück zur SQLite-DB von HA emigrieret habe, möchte ich nun die SQL-Integration in HA neu konfigurieren, komme dabei aber einfach nicht weiter.
Was muss ich denn an den einzelnen Zeilen eintragen?
ich nutze die SQL Integration nicht, aber weil Deine Betreffzeile DB-Größe anzeigen/auslesen lautet. Dafür brauchst Du keine SQL Integration, sondern das kannst Du ganz einfach mit der File Size Integration machen.
Was dann das anzeigen und ggf. auch bearbeiten der SQL-DB betrifft nutze ich das HA SQLite Web Addon.
SELECT table_schema "database", Round(Sum(data_length + index_length) / 1048576, 2) "value" FROM information_schema.tables WHERE table_schema="homeassistant" GROUP BY table_schema;
Zu der MariaDB kann ich leider gar nichts sagen. Mir ist nur noch etwas zu dem recorder-Eintrag in der configuration.yaml eingefallen. Ggf. könnte man sich auch noch mit dem Thema exclude befassen. Bsp.: Ich habe hier einen Sensor (in dem Fall von meiner Wolf Heizungsanlage), den ich zwar sehen und nutzen möchte, aber der mir nicht im Sekundentakt einen Eintrag in der DB erstellen soll. Was er im Normalfall macht. Daher habe ich ihn von der Aufzeichnung bei der DB ausgeschlossen:
If you are using the recorder integration then you don’t need to specify the location of the database. For all other cases, add sqlite:////path/to/database.db as Database URL.
SELECT ROUND(page_count * page_size / 1024 / 1024, 1) as size FROM pragma_page_count(), pragma_page_size();
Das ist normal, bei der Migration, und allen Aktionen auf die SQLite Datenbank, werden Recovery Einträge in die zwei anderen Files .shm, .wal der SQLite Datenbank gemacht
-rw-r--r-- 1 root root 3581263872 Aug 19 10:19 home-assistant_v2.db
-rw-r--r-- 1 root root 32768 Aug 19 10:19 home-assistant_v2.db-shm
-rw-r--r-- 1 root root 4659752 Aug 19 10:19 home-assistant_v2.db-wal
Nach einem Tag werden dies aber neu geschrieben, daher glaube ich, das gestern noch einmal das gleiche was im .db File lag auch im .wal lag.
Noch ein kurzes Update nach einigen Tagen Erfahrung mit der Migration von MariaDB zurück zur HA-SQLiteDB:
Das tägliche Backup ist 20-25% kleiner als mit MariaDB und der Zugriff auf Dashboard-Anzeigen mit grafischen Verläufen (Temperaturen, Lux-Werte, usw.) ist deutlich schneller als vorher mit MarisDB.
Ich kann sogar sagen, die Migration zurück bietet einen deutlichen Performance-Vorteil gegenüber MariaDB. Sicherlich gibt es auch Gründe für MariaDB, z.B.: wenn man die DB “extern” hostet, aber wenn alles auf HA (RasPi/NUC,Mini-PC) läuft, ist es sicherlich eine gute Wahl , gepaart mit dem Vorteil, dass kein weiteres Add-On zum Einsatz kommen muss.
Früher, sprich so bis ca. Mitte 2023, hatte MariaDB in Kombination mit HA tatsächlich einen Geschwindigkeitsvorteil gegenüber SQLite. Das hat sich aber, zumindest wenn es nicht um eine riesige Datenbank für tausende von HA Entitäten geht, durch die div. Änderungen und Anpassungen bei HA und SQLite in das Gegenteil verändert. Aufgrund dieser MariaDB Historie gibt es aber halt immer noch User die meinen MariaDB wäre für/mit HA ja (so) viel besser und schneller als SQLite.
Genau so wie es User gibt die HA Einsteigern immer unbedingt Proxmox, incl. der Auslagerung von allen möglichen Addons in LXC, “aufschwatzen” wollen, weil das ja dann angeblich (so) viel besser wäre als eine Bare-Metal HAOS Installation und/oder man ja sonst die Leistungsfähigkeit eine NUC, Mini-/Tiny-PC usw. “verschwenden” würde. Wenn man schon Proxmox - was ich hier u.a. ja auch nutze - empfiehlt dann sollte man nicht nur die Vor- sondern auch die Nachteile ansprechen.
Hallo, ich nutze auch noch die SQLite und bin mit der Performance auch zufrieden. In 1 Jahr ist die DB um 1GB gewachsen - nicht gross, ich lasse aber auch nicht viele Sensoren loggen. Das Zeit habe ich mal 2 Jahre eingestellt.
Ich würde mir gerne anzeigen lassen, wie gross die DB in den letzten 24 Stunden gewachsen ist.
Hat das jemand schon umgesetzt ?
Ansonsten müsste man sich doch einfach nur 2 Helfer erstellen, oder ? Also einmal die Grösse pro Tag messen und dann mit dem anderen Wert den man vorher genommen hat vergleichen.
den Satz verstehe ich nicht, die SQLite ist die Standarddatenbank, von Home Assistant, wieso dann auch noch
Wenn Du am Standard nichts verdreht hast, dann wird alles in der Datenbank geschrieben, was HA für nötig hält.
Was genau, die pruge Zeit, dann werden ganz viel unnötige Dinge für 2 Jahre gehalten, völliger Schwachsinn, sorry für die harten Worte.
HA kann ohne, dass Du etwas verstellst oder machst, Langzeitdaten halten und hat im Standard eine 10-tägige Historie, in höherer Auflösung, bevor die daten in die Langzeittabellen geschrieben werden.
Da die SQLite Datenbank eine File basierte Datenbank ist, kannst Du dazu die Integration Dateigröße nutzen, z. B.
Das wird bei der SQLite, eher wenig gut funktionieren, sieh mein Screenshot, das liegt am Konzept der SQLite, würde aber zu weit führen, das hier zu erklären.
Den Vergleich zum Vortag nicht, Erklärung siehe oben, ansonsten siehe Dateigröße.
Hallo,
zunächst einmal Danke für die Antworten, ich denke dass meine Frage evtl. etwas unklar war.
Ich nutze die SQLite-DB ausschliesslich mit “include”, sodas ich dort im Moment lediglich ca. 15 Sensoren (hauptsächlich Energieverbräuche) darin ablege. Da ich diese Daten eigentlich für immer halten möchte, habe ich in der recorder.yaml mal “purge_keep_days: 730” eingestellt, d.h. die Daten werden für 2 Jahre in der SQlite-Historie gehalten - ob das jetzt Sinn macht sein mal dahingestellt. Die FileSize-Einträge nutze ich bisher auch schon - dieses Feature ist mir bekannt.
Für mich jetzt aber einmal zum Verständnis:
SQLite hat sowohl eine “Kurzzeit- als auch eine Langzeitspeicherung”. Bei der Kurzzeitspeicherung liegt das Intervall bei 5 min. und wird standardmässig für 10 Tage (bei mir jetzt 2 Jahre) gespeichert.
Wenn ich den Wert “purge_keep_days: 730” jetzt auf 14 ändern würden, dann blieben die History-Daten für 2 Wochen (mit einem Intervall von 5 Minuten) erhalten, danach würden diese mit einem Intervall von 1 Stunde in die Langzeitspeicherung gehen, oder ?
D.h. Langzeitspeicherung heisst dann auch für “immer” und es gehen keine Daten verloren ?
Danke.
und noch einmal, die SQLite Datenbank und HA machen die Langzeitdatenhaltung seit Version ~2023.10 von alleine, dazu braucht man nichts mehr einzustellen.
Ja, soweit schon korrekt, damit hast Du dann die Daten in einer höheren Auflösung in der Datenbank als vielleicht nötig und auch die Daten in den Langzeitdaten.
Du kannst Dir ja mal das Add-on SQLite-Web installieren, dann schau in die Tabellen was Du alles hast.