Zum Inhalt springen
SONOYA.com
Raspberry Pi & Linux

Home Assistant langsam? Datenbank verkleinern

Die Datenbank von Home Assistant bremst Backups und Verlauf? So findest Du die Datenfresser, stellst den Recorder ein und behältst die Statistiken.

Von

Datenbank-Symbol auf dunkelrotem Verlauf für eine zu große Home-Assistant-Datenbank, die mit dem Recorder aufgeräumt wird

Am Anfang ist Home Assistant flott. Nach ein, zwei Jahren und ein paar Dutzend Geräten mehr dauert das Öffnen des Verlaufs plötzlich Sekunden, die nächtlichen Backups sind mehrere Gigabyte groß, und auf einem Raspberry Pi mit SD-Karte wird die Oberfläche zäh. Fast immer steckt dieselbe Ursache dahinter: Die Datenbank ist zu groß geworden, weil ein paar Sensoren im Sekundentakt Werte schreiben, die niemand braucht.

Zuständig dafür ist der Recorder. Er speichert jede Zustandsänderung jeder Entität, damit Verlauf, Logbuch und Diagramme funktionieren. Die gute Nachricht: Mit wenigen Zeilen Konfiguration bekommst Du die Datenbank dauerhaft klein, ohne die Langzeitstatistiken zu verlieren, auf denen zum Beispiel das Energie-Dashboard beruht. Grundlage ist die offizielle Dokumentation zum Recorder, Stand Home Assistant 2026.11.

Wie der Recorder arbeitet

Zwei Arten von Daten musst Du auseinanderhalten:

  • Kurzzeitdaten: jede einzelne Zustandsänderung. Ab Werk behält Home Assistant sie 10 Tage. Jede Nacht um 4:12 Uhr löscht der Recorder ältere Einträge, und am zweiten Sonntag jedes Monats packt er die Datenbank neu, damit der freie Platz auch wirklich frei wird.
  • Langzeitstatistiken: Mittelwerte, Minima, Maxima und Zählerstände in Stunden-Auflösung, für alle Sensoren mit einer state_class. Diese Daten löscht der Recorder nie. Sie sind klein und versorgen das Energie-Dashboard und Statistik-Diagramme über Jahre.

Daraus folgt die wichtigste Erkenntnis: Wenn Du Kurzzeitdaten reduzierst, verlierst Du keine Jahreskurven für Strom, Temperatur oder Luftfeuchtigkeit. Du verlierst nur die sekundengenaue Detailansicht für ältere Tage.

Schritt 1: Wie groß ist die Datenbank?

Die Datenbank liegt bei einer Standardinstallation in der Datei home-assistant_v2.db im Konfigurationsordner. Am bequemsten siehst Du ihre Größe mit der App File editor oder Studio Code Server, die Du unter Einstellungen > Apps findest. Bis Anfang 2026 hieß dieser Bereich noch Add-ons.

Als grobe Orientierung: Bis etwa 1 GB ist alles im grünen Bereich. Ab 2 bis 3 GB wird es auf einem Raspberry Pi spürbar, und Datenbanken mit 10 GB und mehr sind fast immer das Werk weniger, sehr gesprächiger Entitäten.

Schritt 2: Die Datenfresser finden

Installiere unter Einstellungen > Apps die App SQLite Web und öffne sie. Wähle links die Tabelle states, wechsle auf Query und führe diese Abfrage aus:

Code
SELECT states_meta.entity_id, COUNT(*) AS anzahl
FROM states
JOIN states_meta ON states.metadata_id = states_meta.metadata_id
GROUP BY states_meta.entity_id
ORDER BY anzahl DESC
LIMIT 20;

Die Abfrage zählt, wie viele Zustände jede Entität in der Datenbank hat, und zeigt die zwanzig größten. Typische Kandidaten ganz oben sind:

  • Leistungs- und Spannungssensoren von Steckdosen, die jede Sekunde einen neuen Wert melden.
  • Signalstärke-Sensoren von WLAN- und Bluetooth-Geräten.
  • Uptime- und Zeitsensoren, die sich ständig ändern.
  • Mediaplayer, die während der Wiedergabe laufend ihre Position melden.
  • Systemmonitor-Werte wie CPU-Last oder Netzwerkdurchsatz.

Frag Dich bei jedem Eintrag: Schaue ich mir dafür jemals den Verlauf an? Wenn nicht, gehört er auf die Ausschlussliste.

Schritt 3: Den Recorder einstellen

Öffne die configuration.yaml und ergänze einen Block für den Recorder. Gibt es dort schon einen recorder:-Abschnitt, erweiterst Du diesen:

Code
recorder:
  purge_keep_days: 7
  commit_interval: 30
  exclude:
    domains:
      - media_player
      - update
    entity_globs:
      - sensor.*_signal_strength
      - sensor.*_rssi
      - sensor.*_uptime
      - sensor.*_voltage
    entities:
      - sensor.date
      - sensor.time
      - sun.sun

Was die Zeilen bewirken:

  • purge_keep_days: 7 behält Kurzzeitdaten eine Woche statt zehn Tage. Für die meisten reicht das, denn ältere Werte stehen ja in den Langzeitstatistiken.
  • commit_interval: 30 schreibt die gesammelten Änderungen nur alle 30 Sekunden statt alle 5 Sekunden auf den Datenträger. Die Doku empfiehlt das ausdrücklich für Raspberry Pis mit SD-Karte, weil es die Karte schont.
  • exclude nimmt ganze Bereiche (domains), Muster (entity_globs) und einzelne Entitäten (entities) von der Aufzeichnung aus. Das Sternchen in einem Muster steht für beliebige Zeichen.

Passe die Liste an das an, was Deine Abfrage gezeigt hat. Ausgeschlossene Entitäten funktionieren weiter ganz normal in Automationen und Dashboards. Nur ihr Verlauf wird nicht mehr gespeichert.

Prüfe die Konfiguration unter Entwicklerwerkzeuge > YAML mit Konfiguration prüfen und starte Home Assistant danach neu.

Schritt 4: Altlasten sofort entfernen

Die neue Konfiguration wirkt nur auf neue Daten. Was schon in der Datenbank liegt, räumst Du einmalig mit einer Aktion auf. Öffne Entwicklerwerkzeuge > Aktionen, wechsle in den YAML-Modus und führe aus:

Code
action: recorder.purge
data:
  keep_days: 7
  repack: true
  apply_filter: true

apply_filter: true löscht dabei auch alle Altdaten der Entitäten, die Du gerade ausgeschlossen hast. repack: true schreibt die Datenbank danach neu, damit sie tatsächlich kleiner wird. Das dauert bei großen Datenbanken einige Minuten, und Home Assistant kann in dieser Zeit träge reagieren. Wichtig laut Doku: Auf dem Datenträger muss mindestens so viel Platz frei sein, wie die Datenbank groß ist, weil beim Umpacken eine Kopie entsteht.

Willst Du nur einzelne Entitäten loswerden, ohne den Rest anzufassen, gibt es die Aktion recorder.purge_entities:

Code
action: recorder.purge_entities
target:
  entity_id: sensor.waschmaschine_leistung
data:
  keep_days: 0

Prüfen, ob es gewirkt hat

Schau Dir nach dem Umpacken erneut die Größe der Datei home-assistant_v2.db an. Eine Verkleinerung auf ein Viertel oder weniger ist bei typischen Installationen keine Seltenheit. Öffne außerdem das Energie-Dashboard und ein Statistik-Diagramm für einen Temperatursensor: Die Werte der letzten Monate müssen weiterhin da sein.

Das nächste Backup ist entsprechend kleiner. Wie Du Backups automatisch auf ein NAS oder einen USB-Stick legst, steht in Home Assistant Backup: Schlüssel, USB-Laufwerk und NAS.

Häufige Fragen

Kann ich den Verlauf einzelner Sensoren länger behalten? Nicht pro Entität über den Recorder. Wenn Du einen Wert über Jahre im Detail brauchst, sorge dafür, dass er eine state_class hat. Dann landet er in den Langzeitstatistiken.

Hilft eine externe Datenbank wie MariaDB? Bei sehr großen Installationen kann MariaDB schneller sein, sie löst aber nicht das eigentliche Problem. Eine zu große SQLite-Datenbank wird als zu große MariaDB-Datenbank nicht schneller. Räum zuerst auf.

Die Datenbank wird nach dem Purge nicht kleiner. Dann fehlte das Umpacken. Führe recorder.purge noch einmal mit repack: true aus.

Home Assistant meldet eine beschädigte Datenbank. Das passiert vor allem nach Stromausfällen auf SD-Karten. Home Assistant benennt die defekte Datei dann um und beginnt mit einer neuen. Die Langzeitstatistiken sind in diesem Fall weg, die Konfiguration bleibt. Dagegen helfen eine SSD statt SD-Karte und regelmäßige Backups. Ob für Dich ein Umstieg auf andere Hardware sinnvoll ist, klärt der Vergleich Raspberry Pi 5 oder Mini-PC für Home Assistant?

Fazit

Eine träge Home-Assistant-Installation braucht selten neue Hardware, sondern meistens eine kurze Ausschlussliste. Finde mit der Abfrage die zehn gesprächigsten Entitäten, schließ sie aus, räum einmal mit recorder.purge auf, und die Datenbank bleibt auf Dauer schlank. Die Kurven, die Dir wirklich wichtig sind, bleiben dabei in den Langzeitstatistiken erhalten.

Weiterlesen.