Hauptmenü

dblog und Primary Key

Begonnen von hermann1514, 28 Juni 2016, 10:42:03

Vorheriges Thema - Nächstes Thema

hermann1514

Hallo,

ich sammel mein Daten in einer MYSQL DB. Da ich nun etwas am tunen bin, ist mir augefallen das in der DB sehr viele doppelte Einträge vorhanden sind.
Diese kann ich jedoch nicht so einfach löschen, da die DB keine primary Key hat.

Ist es ohne weiteres möglich einen primary Key hinzuzufügen ohne das FHEM sich daran stört?

Gruß
Hermann

marvin78

Sind es doppelte Einträge oder kommt es nur durch falsches/redundantes loggen zustande? DBLog kreiert von sich aus keine doppelten Einträge. Was hat löschen von Zeilen mit dem Primary Key zu tun?

Primary Key ist nicht notwendig und auch nicht hilfreich für irgend eine Anwendung bezüglich FHEM.

hermann1514

Ich habe mehrere Geräte die in 30 sekunden abschnitte die gleichen Werte in die DB geschrieben haben.
Das Problem habe ich durch eintragen vom event-min-interval und event-on-change-reading gelöst. Nun werden nur die geänderten Werte eingetragen.
Aber trotzdem bleiben die alten Einträge.
Zur Zeit habe ich 1.4 Mio. Einträge. Ich denke ich kann dieses zahl durch das löschen der "Überflüssigen" Werte halbieren um die Performance der DB und der Charts verbessern.

Wenn der primary key gesetzt ist, könnte ich das dann mit myphpadmin "bequem" lösen :-)


Wernieman

Warum brauchst Du dazu denn einen pkey?

Und Du willst bestimmt mit sql löschen, myphpadmin ist "nur" ein Frontend ..... wobei ich eine "echte" mysql-Konsole mittlerweile vorziehe ;o)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

marvin78

Ich frage mich noch immer wo hier der Primary Key ins Spiel kommt!?

hermann1514

Also,

klar ist myphpadmin ein Frontend. Ist aber einfacher zum löschen einzelner Zeilen - und für mich schneller - als nicht SQL Spezialist.
Wenn der primary Key nicht vorhanden ist, kann ich im myphpadmin die Zeilen nicht auswählen und löschen. Sobald dieser gesetzt ist geht es.

An die SQL Spezialisten:
Wie kann ich denn mit einem SQL Befehl doppelte Werte löschen? Es soll jeweilt nur ein Wert erhalten bleiben.

Gruß
Hermann


hermann1514

 ;D ;D ;D ;D ;D...danke

Aber, das hatte ich schon gemacht. Und wie gesagt - als SQL Laie steig ich da im Moment noch nicht durch.

:)

marvin78

Besser kann ich es wirklich nicht erklären.

hermann1514

OK. Ich versuche es nochmal zu lernen.... ;D ;D ;D

ernst1024

vielleicht solltest du dir die Möglichkeiten die dbLog anbietet einmal prüfen: deleteOldDays oder reduceLog
Gruß Ernst