Home Assistant Datenbank explodiert?

Hallo Zusammen,

nachdem meine Home Assistant Backups nun lange Zeit so ca. bei 2 GB lagen, habe ich nun festgestellt, dass die Größe auf knapp 5GB Angewachsen ist. Dabei hat sich die Größe über den letzten Monat kontinuierlich vergrößert. Ein Ende ist bislang nicht in Sicht.

Habe heute das Backup mal geöffnet und festgestellt, dass die Datenbank der Übeltäter ist.

Kann man da den Grund eingrenzen? Ich wüsste nicht weshalb die Datenbank sich in kurzer Zeit so vergrößert. Es kommt schon ab und an mal ein Gerät dazu, aber riesige Änderungen habe ich eigentlich nicht vorgenommen.

Also die HA DB führt eigentlich kein Eigenleben, :laughing: sofern es nicht gerade ggf. eine Bug gibt.

Ob Du “riesige” Änderungen gemacht hast oder nicht spielt auch eher weniger eine Rolle, sondern was diese hinzugefügten Geräte dann so in der HA DB speichern.

Ich würde mir an erster Stelle mal den Verlauf von der Dateigröße der DB anschauen, um z.B. zu sehen ob der automatische Purge durchgeführt wurde. Wie hier zu sehen.


Dann würde ich mir, weil Du ja schreibst das das erst seit einem Monat ist, auch mal den Verlauf für das ganze letzte Jahr anschauen. Wie hier zu sehen.

Anm.: Die da noch im Jan. letzten Jahres zu sehenden große Größe bei meiner DB lag in dem Fall z.B. daran das es zu dem Zeitpunkt gerade einen entsprechenden Bug bei HA gab.

Wenn Du dann nicht mehr wissen solltest welche Geräte Du in den letzten 1 - 2 Monaten hinzugefügt hast, um diese ggf. mal temporär zu deaktivieren, wirst Du wohl oder übel per SQL-Tool einen Blick in die HA DB Datei werfen müssen und dort per entsprechender Abfrage Dir anzeigen lassen welche Sensoren da ggf. besonders viele Einträge vorgenommen haben. Infos zu solchen Abfragen findet Du hier im Forum, oder eben auch per Google.

Ansonsten war das Thema DB-Größe hier im Forum auch schon dann und wann mal ein Thema und evtl. findest Du dazu hier im Forum dann auch noch weitere, ggf. hilfreiche Antworten.

VG Jim

Naja, eine “klitzekleine” Änderung am Recorder (purge_keep_days) reicht aus um die DB anschwellen zu lassen.
Um den Verlauf der Dateigröße zu bekommen muss man erstmal die “Dateigröße - Integration” am Start haben…

Ja klar, hätte ich vielleicht gleich mit verlinken können. :slightly_smiling_face:

Edit @S-d Und Du kannst - wenn Du willst - per Aktionen natürlich auch mal einen Purge manuell ausführen.

VG Jim

1 „Gefällt mir“

Vielen Dank schon einmal für eure Antworten!
Die File size hatte ich noch nicht installiert, habe ich eben gemacht, da kann ich dann natürlich erst ab jetzt beobachten…

@Baxxy am Recorder habe ich zumindest nicht bewusst etwas geändert. Wo kann ich das einsehen?

@Jim_OS ich habe jetzt mal in die Datenbank geschaut.

Das sind die Top Writer der letzten 24h:

entity_id	writes_last_24h
`sensor.gesamtleistung_maker_raum_gerate	74105`
`sensor.go_echarger_schlaitdorf_wifi_signal_strengt …	45379`
`sensor.bambu_lab_h2d_bambu_lab_h2d_power	42036`
`sensor.bambulab_h2d_stromkosten_eur_h	41870`
`sensor.leistung_haus_privat_pv	33399`
`sensor.netzbezug_w	32552`
`sensor.leistung_haus_privat_gesamt	31421`
`sensor.bambulab_p1s_switch_0_power	30852`
`sensor.bambulab_p1s_stromkosten_eur_h	30777`
`sensor.h2d_0948bb550301911_hotendlufterdrehzahl	26528`
`sensor.go_echarger_voltage_l3	22788`
`sensor.go_echarger_242273_nrg_3	22785`
`sensor.go_echarger_voltage_l1	22350`
`sensor.go_echarger_242273_nrg	22349`
`sensor.go_echarger_242273_nrg_2	22317`
`sensor.go_echarger_voltage_l2	22317`
`sensor.shellypro3em_a0dd6ca0f580_total_active_powe …	20883`
`sensor.shellypro3em_a0dd6ca0f580_total_apparent_po …	20882`
`sensor.shellypro3em_a0dd6ca0f580_phase_b_active_po …	20838`
`sensor.shellypro3em_a0dd6ca0f580_phase_b_apparent_ …	20834`
`sensor.shellypro3em_a0dd6ca0f580_phase_a_apparent_ …	20481`
`sensor.shellypro3em_a0dd6ca0f580_phase_a_active_po …	20440`
`sensor.shellypro3em_a0dd6ca0f580_phase_c_active_po …	19647`
`sensor.shellypro3em_a0dd6ca0f580_phase_c_apparent_ …	19379`
`sensor.p1s_01p00c472401329_wi_fi_signalqualitat	18755`
`sensor.go_echarger_242273_tma_2	14849`
`sensor.go_echarger_temperature_1	14849`
`sensor.go_echarger_242273_nrg_12	10588`
`sensor.go_echarger_power_total	10579`
`sensor.go_echarger_242273_tpa	10487`

Diese Sensoren sind alle bereits knapp 2 Jahre alt, bis auf einen: Der Summensensor Maker Raum Geräte Gesamtleistung. Den habe ich erst vor kurzem angelegt…

Der macht natürlich ordentlich traffic, den brauche ich auch nicht zwingend in der Datenbank.

Die anderen auch nur zum Teil.

Hotendlüfterzahl der 3D Drucker oder wifi signal natürlich auch nicht. Sollte ich die jetzt alle manuell aus der DB ausschließen?

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Ich kann diese Werte nicht bewerten, sprich was jetzt viel und was ggf. wenig ist. Dazu müsste ich auch erst mal wieder eine Blick auf die Werte in meiner HA DB werfen, um halbwegs irgendetwas einschätzen zu können.

Auch kann ich Dir nicht sagen ob und welche Werte Du jetzt ggf. von einer Aufzeichnung in der DB per

recorder:
  exclude:
    entities:
      - irgendein_Sensor

ausschließen solltest oder kannst. Weil ich natürlich nicht weiß welche Werte Du brauchst, haben möchtest usw.

Wie gesagt könntest Du ja ein manuelles purgen mal machen, um mal zu sehen ob und welche Auswirkungen das auf Deine HA DB hat. Sprich ob und um wie viel kleiner die DB-Datei dann wird. Im Prinzip kann dabei auch nicht schiefgehen, aber trotzdem machst Du das dann auf Deine eigene Verantwortung, weil ich natürlich nicht weiß was da bei Dir jetzt ggf. los ist. Nicht das Du hinterher mit mir schimpfst. :laughing:

Weil @Baxxy ja noch nicht geantwortet hat: Wenn Du da Änderungen gemacht haben solltest, hättest Du diese in der configuration.yaml vornehmen müssen. Z.B. mit einem Eintrag wie z.B.:

purge_keep_days: 30

Wenn Du da keine Einträge hast sollte alles so wie voreingestellt laufen. Siehe zu dem Thema:

VG Jim

Danke für die ausführliche Rückmeldung!

Ein paar Entities die ich nun wirklich nicht in der Statistik brauche, habe ich jetzt exkulpiert.

Purge keep days wurde nicht angepasst, sollte also Standard sein.

Manuell gepurged habe ich nun auch, wirklich was geändert hat das alles nicht an der Größe - aber die Datenbank ist jetzt auch erstmal nicht weitergewachsen. Ich habe auch manuell mal testweise die oben gezeigten Entitäten komplett gepurged (keep days 0) - auch das hatte keinen Einfluss…

so ganz schlau werde ich daraus noch nicht.

Du musst entweder warten bis auto_repack automatisch ausgeführt wird. Jeden zweiten Sonntag nach dem auto purge. Oder Du führst es manuell aus.

Siehe auch Doku

Gruß Osorkon

1 „Gefällt mir“

Moin

Das ist/wäre schon eher ungewöhnlich. Hast Du diese beiden Schieberegler


dann auch aktiviert gehabt? Falls nein solltest Du das bereinigen noch einmal mit aktivierten Schiebereglern machen. Die Anzahl der aufzubewahrenden Tage musst Du Dir dann selber überlegen.

VG Jim

Danke euch! Die beiden Regler hatte ich natürlich vergessen. Habe jetzt nochmal gepurged, Tage habe ich nicht angehakt. Laut Doku wird dann mit den Standard Settings gepurged, das sollte dann ja passen.

Habe dadurch jetzt die DB von 4,9GB auf 3,8 reduziert. Ist ein Stück, aber natürlich immer noch groß… Beobachte das jetzt mal.

Zum Verständnis: Leistungssensoren kann ich doch eigentlich Grundsätzlich aus dem Recorder exkludieren oder? Ich habe relativ viele Smart Plugs zur Geräteenergieüberwachung. Aber die Leistung ist da ja auch für die Langzeitstatistik nicht relevant. Das Energy Dashboard ist ja kWh basiert.

Hatte ich mir gedacht und in dem Fall ist das schon mehreren Usern passiert. :wink:

Was Deine Frage betrifft: Du kannst von der Erfassung in der DB Sensoren/Entitäten ausschließen was und wie Du möchtest. Welche Du dann ausschließt und was das am Ende bei Dir für Folgen hat, oder haben könnte, musst Du selber schauen und feststellen. Was das Energy Dashboard angeht haben Senosen dafür die device_class: energy und wenn sie diese nicht haben sind sie für das Energy Dashboard eigentlich auch nicht relevant. Ob sie dann für Dich aber ggf. noch irgendwo und irgendwie anders relevant sind kann ich Dir nicht sagen.

Ich würde Dir empfehlen jetzt erst einmal z.B. 30 Tage lang abzuwarten, bevor Du da jetzt “wie wild” irgendetwas irgendwie von der Erfassung ausschließt, oder ausschließen willst. Über diese 30 Tage hinweg beobachtest Du mal die DB-Größe und dann auch ob und wie sie durch das automatische purgen dann reduziert wird. Erst wenn sie weiterhin munter und unverhältnismäßig stark anwachsen sollte, musst Du Dich weiter auf die Suche nach dem Problem begeben.

VG Jim

Okay dann warte ich mal ab… Die größten Akteure in der Datenbank, die ich sicher nicht brauche, habe ich mal ausgeschlossen.

Für mich ist auch noch die Frage in welchem Bereich sich eine übliche Datenbankgröße bewegen sollte?

Ich habe ein großes Smart Home (ca. 220 physische Geräte mit insgesamt 7800 Entitäten - also da kommt natürlich schon was zusammen. Aber so ein richtiges Gefühl habe ich nicht was die größe angeht.

Ein “sollte” gibt es dabei logischerweise nicht. :slightly_smiling_face: Hier gibt es halt eher kleine HA Installationen - so wie z.B. meine - bei denen die HA DB vielleicht unter 1GB groß ist und es gibt hier aber auch durchaus User die hier schon von DB Größen von z.B. 30 GB geschrieben haben. Außerdem hängt es ja auch davon ab wie lange HA überhaupt schon im Betrieb ist.

Das sich bei Dir die DB-Größe innerhalb nur eines Monats mehr als verdoppelt hat ist sicherlich nicht normal, sofern es dafür keine Gründe gab die Du selber verursacht hast. Aber warum das jetzt genau bei Dir passiert ist das wird Dir hier wohl niemand sagen können.

Aktuell sind mir zumindest keine Bugs bei HA in Verbindung mit der DB bekannt und daher muss es - wenn das Problem bei Dir auch noch weiterhin auftreten sollte - eben ein recht individuelles Problem bei Dir sein.

BTW meine kleine HA Installation: :slightly_smiling_face:

Sensors: {{ states.sensor | count }}
Switches: {{ states.switch | count }}
Binary sensors: {{ states.binary_sensor | count }}
Automations: {{ states.automation | count }}

Ergebnis:
Sensors: 315
Switches: 49
Binary sensors: 54
Automations: 13

DB-Größe aktuell nur rund 500MB (waren auch schon mal rund 2GB) :laughing: und HA läuft bei mir jetzt seit etwas mehr als 5 Jahren.

VG Jim

Das hängt von vielen Faktoren ab.
Bei meiner Handvoll Geräten, bewegt sich die Größe so um die 3 GB.

Im November war die Umstellung von ZigBee2MQTT zu ZHA

Das wären meine Recorder Einstellungen:


db_url: !secret mariadb_url
auto_purge: true
purge_keep_days: 7
include:
  domains:
    - sensor
    - number
    - binary_sensor
    - climate
    - lock
    - switch
    - light
    - media_player
    - cover
    - device_tracker
    - input_boolean
    - input_number
    - alert
    - group
    - alarm_control_panel
    - automation
    - zone
    - person
    - valve
    - counter
exclude:
  entities:
    - sensor.last_boot
    - sensor.date
    - select.zigbee2mqtt_bridge_log_level
    - switch.zigbee2mqtt_bridge_permit_join
    - sensor.zigbee2mqtt_bridge_permit_join_timeout
    - sensor.zigbee2mqtt_bridge_version
  entity_globs:
    - sensor.weather_*

Sehe gerade, könnte die zigbee2mqtt Sensoren wieder raus werfen. :grinning_face_with_smiling_eyes:

Gruß Osorkon

Bei der Anzahl würde ich eher gezielt die nötigen Entitäten inkludieren und den Rest pauschal ausschließen, anstatt umgekehrt. ¯\_(ツ)_/¯

Wenn du Leistungssensoren nur in der Rekordzeitspanne behalten willst, aber nicht in der short und long term Statistik, kannst du auch per customize in der config die state_class auf null setzen. Da die meistens measurement haben, wie auch temp Sensoren usw, kann man die nur so aus den Statistiken ausschließen, da diese nicht gepurged werden vom Rekorder.

Schreibfehler Baterie bitte mit 2 t