Hallo, hiermit hab ich bisher die Anzahl Statistiksätze für eine Entität festgestellt:
- platform: statistics
name: Anzahl Steckdose Klima Bad
entity_id: sensor.steckdose_badklima_leistung
state_characteristic: count
max_age:
hours: 8640
precision: 3
Jetzt hab ich festgestellt das bei der feststellung der Anzahl die gleiche Anzahl an Datensätze anfallen. Eigentlich will ich nur die Anzahl wissen und nicht noch mehr Datensätze erzeugen.
Wie kann ich das am besten machen?
Eine Liste aller Entitäten mit der Anzahl an Statistiksätze wäre ein Traum.
Ich vermute, am Ende muß man über die Datenbank gehen.
Ein Beispiel für MariaDB
SELECT
sm.entity_id,
COUNT(s.state_id) AS messpunkte
FROM
states_meta sm
LEFT JOIN
states s ON sm.metadata_id = s.metadata_id
GROUP BY
sm.entity_id
ORDER BY
messpunkte DESC;
Sicher könnte man das Ergebnis auch in einen SQL Sensor legen und dessen Statistik Aufzeichnung über recorder/exclude in configuration.yaml ausschließen. Ich habe es aber nicht probiert.
Ich hatte nie die Standard DB aber ich denke, dieses Addon phpMyAdmin geht nicht für die SQLite. Aber ich bin mir sicher, ein DB Tool mit dem man SQL Statements ausführen kann, gibt es auch für den Standard. Suche mal hier im Forum oder google.
Nein, PhpMyAdmin kann kein SQLite. Du kannst du aber mal dbeaver ansehen, damit kann man auch SQLite bearbeiten. Du musst halt berücksichtigen dass Mysql eine Datenbank mit Schnittstelle ist, während SQLite “nur” eine Datei ist in der die Daten liegen. Wenn du dbeaver nutzen willst musst du an die Datei kommen. Ideal HA vorher stoppen damit keine Inkonsistenzen und Sperren auftreten.
Aber bin umso mehr verwirrt. Gleich der Erste Eintrag sensor.strom.minus mit über 350000 einträge gehört einem Phantom. Im ganzen System ist diese Entität nicht (mehr) vorhanden. Sie wird mir aber auch nirgends zum Löschen angeboten.
Pflegt HA auch Leichen weiter? Macht doch kein Sinn. Mindestens bei den Entwicklertools unter Statistik müsste es doch zum Löschen angeboten werden.
Ob es eine Waise ist, siehst Du daran, ob sich der Wert wirklich nicht mehr ändert.
PS: Dieses strom_minus Sensor Phänomen (größter Speicherfresser) hatte ich anfangs auch - jede kleinste Wattänderung führte zu einem Schreiben in der DB.
Hab es überall gesucht Verändert hat es sich in der letzten Stunde auch nicht. Klar ist schon das er mal angelegt war. Was ich mir vorstellen kann ist das ich den Entitätsnamen umgeändert habe. Bin mir aber nicht Sicher. Wenn mir jemand den Sql Befehl fürs Löschen zeigt (ich kann kein sql) fliegt es Hochkant raus.
Irgendwie hab ich es hinbekommen dieses Miststück zu löschen. Ich denke es war mit Entwicklertools und purge entity.
Es ist schade das so ein tolles System beim löschen von verweisten Entitäten und/oder Messpunkte uns, aus meiner Sicht, völlig im Stich lässt. Bei der Recherche sind mir unselige Hilfescheie aber keine Lösungen untergekommen. Sogar die KI erzählt Märchen.
Es ist doch klar, dass beim Einrichten von Geräten/Entitäten jede Menge Schrott anfällt. Danach will man frisch mit 0 beginnen und alles verweistes löschen. Hier fehlt eine Routine die alle Messpunkte eines gerätes löschen kann. Für einzelne Entitäten gehts ja einigermaßen mit purge entity, sofern sie nicht nicht deaktiviert sind . Aber was für ein Aufwand bei 450 Entitäten mit schätzungsweise 10% Ausschuss.
Fürs Erste komme ich weiter. Danke für Eure Hilfe.
VG Carlos
P.s. wird eine Entität gelöscht welche noch Bezüge hat, so werden die Messpunkte gelöscht, die Entität bleibt am Leben. Beginnt also wieder bei Null; umständlich aber
Hallo, etwas spät, aber ich wollte es nicht einfach so stehen lassen.
Der Ursprung bei mir war, das ich über eine ‘tote’ Entität mit 300.000 Messpunkten gestolpert bin. Als alter DV’ler der früher um jedes Byte einer Lochkarte kämpfen musste, bin ich erstmal erschrocken. Also habe ich es Untersucht und richtig gestellt.
Nach Bereinigung von mehr als Eine Mio Messpunkte und über 30 Entitäts-Leichen (achtung: tote können wieder aufleben) muss ich gestehen das sich der Aufwand nicht lohnt. Ausser einer minimalste verkleinerung der DB und Backup hat sich absolut nichts geändert. Nicht der Rede wert.
Ich muss einfach lernen das heute ganz andere Dimensionen gelten. Ohne Not lass ich jetzt lieber das echt Durchdachte System laufen wie es will und soll.
ohne es genau zu wissen, was Du gemacht hast, ist das Löschen alleine nicht ausreichend um Speicherplatz wiederzubekommen
Die SQLite Datenbank nutzt beim Starten, eine gewisse Anzahl an Datenblöcken, der SSD/HDD, inodes, die werden mit Daten vollgeschrieben, z. B. 2 GB, dann löschst Du Daten, weil aber die inodes nicht freigegeben werden, bleibt es bei 2 GB, daten werden dann in die Lücken geschrieben, so sie da hineinpassen, ansonsten angehängt und obwohl Du gelöscht hast, wird Dir dann 2,5 GB angezeigt.
Erst ein vaccum ordnet die Daten wieder sequenziell und hintereinander, und dann sieht man auch, was die Löschaktion gebracht hat.
Ich habe nicht nachgeschaut, wie SQLite in HA eingerichtet ist, also ob es dort ein autovacuum gibt oder nicht.
Warnung ich würde das nicht bei aktiver Nutzung der Datenbank machen, lieber HA stoppen und dann durchführen, oder eben damit leben.
VG
Bernd
P.S.: der allgemeingültige Rat, ein Backup haben, ist besser, als eins zu brauchen
Hallo, ja so wie Du es weiter oben Darstellst kenne ich das auch. Ich kann auch nicht ausschließen, dass die minimale verkleinerung nach der Bereinigung evtl. einen anderen Grund hatte. Wie auch immer, habe ich nun 14,1 GB freien Speicher und etwa 0,1 GB “gewonnen”. In diese 0,1 GB (100 MB) passen meine in x Einzelschritte mühsam Bereinigte über 1 Mio Messpunkte locker rein. Gestört haben sie auch nicht weil sie nur in der DB rumstehen und sonst nirgends erscheinen. Ich denke die Entwickler haben dem Komfort, die Entität hätte z.B. versehentlich gelöscht worden sein und kann wiederbelebt werden, den Vorzug vor dem nicht störendem Platzverbrauch gegeben. Ich traue denen sogar zu, dass diese, im Notfall oder nach einiger Zeit, dann gelöscht werden ohne das jemand etwas merkt(spekulation).
Auf jeden Fall scheint die DB ganz gut alleine klar zu kommen. Wenn sie auf irgendwelche Schwierigkeiten stößt, wird sie es als anständige DB brav Melden, dann sieht man weiter.
Ich für meinen Teil lasse jetzt alles beim alten und freue mich über ein tolles und Superschnelles System.