SQLite DB-Größe anzeigen/auslesen

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?


und ist dafür noch etwas in der configuration.yaml zu machen?
Bisher habe ich dort nur das hier stehen:

recorder:
  db_max_retries : 10
  auto_purge: true
  purge_keep_days: 30

Hi,

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.

VG Jim

1 „Gefällt mir“

Moin,
ich mache das mit der Dateigröße Integration.
Damit die auf den Config Ordner zugreifen kannst brauchst du noch das in der Configuration.yaml:

homeassistant:
  allowlist_external_dirs:
    - /config

Edit:
@Jim_OS war schneller

LG
Tobi

1 „Gefällt mir“

Jepp wir beiden haben das DB-Thema ja gerade auf der Agenda stehen. :rofl:

OT und PS: Bei mir ist das DB-Problem seit dem letzten manuellen bereinigen weg und seit dem 15. vergrößert sich auch wieder die DB.

Mal sehen wie lange noch. :laughing:

VG Jim

Danke @Jim_OS und @totow

hat super funktioniert!
Die “allowlist” war bei mir wegen einer anderen Anwendung schon freigegeben.

Bei MariaDB ging die Anzeige m.W.n. nur mit der SQL-Integration(?)

SQL Abfrage:

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;

Spalte Value.

Wird auch in der Doku der SQL Integration als BSP aufgeführt

Gruß
Osorkon

Danke @Osorkon , so ähnlich sah es bei der MariaDB auch aus.
Bei mir kommt aber eine Fehlermeldung:

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:

recorder:
  purge_keep_days: 30
  exclude:
    entities:
      - sensor.wolf_bm2_0x30_220032_uhrzeit

Ist halt nur ein Beispiel.

VG Jim

Moin,

SQLite

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();

SQL

Use size as column for value.

VG
Bernd

1 „Gefällt mir“

Der Umstieg von MariaDB auf die HA-SQLite hat bei mir zu Reduzierung der DB von fast 7 GB geführt:


:crazy_face:

Allerdings hat sich mein full_backup deutlich erhöht:

Kannst ja die DB im Backup ausschließen.

War übrigens damals der Grund bei mir auf MariaDB
als stand alone Lösung umzusteigen. Da bei zurückspielen des Backups die db meistens korrupt war.

Gruß
Osorkon

Heute früh sieht es jetzt schon ganz anders aus, obwohl ich an den Einstellungen nichts geändert habe:


:grinning:

Moin,

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.

VG
Bernd

1 „Gefällt mir“

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 :grinning: , gepaart mit dem Vorteil, dass kein weiteres Add-On zum Einsatz kommen muss.

1 „Gefällt mir“

Amen :slightly_smiling_face:

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. :rofl:

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. :rofl: 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.

VG Jim

1 „Gefällt mir“

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.

Moin,

den Satz verstehe ich nicht, die SQLite ist die Standarddatenbank, von Home Assistant, wieso dann auch noch :thinking:

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.

VG
Bernd

Dafür installierst du die Integration “Dateigröße” und fügst einen Eintrag mit dem Pfad deiner HA Datenbank ein. Bei mir ist das z.B.

/config/home-assistant_v2.db

Danach bekommst du einen Sensor mit der aktuelle Grüße der DB.

Diesen kannst du dann über den Verlauf analysieren.

Das sieht bei mir z.B. für dieses Jahr so aus:

Ich nutze an der Stelle den Standard von 10 Tagen Historie - alles darüber hinaus geht in die Langzeitstatistik.

Hier z.B. ein Temperatur-Sensor von Nov. 2023 bis heute.

Gruß, Lars

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.

Moin,

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.

Korrekt.

Korrekt.

Korrekt, aktuell ist das so, ob das in 5 Jahren noch so ist, kann man nicht sagen :wink:

VG
Bernd

1 „Gefällt mir“