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
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.
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 :-)
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)
Ich frage mich noch immer wo hier der Primary Key ins Spiel kommt!?
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
http://www.lmdfdg.com/?q=mysql+doppelte+eintr%C3%A4ge+l%C3%B6schen
;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.
:)
Besser kann ich es wirklich nicht erklären.
OK. Ich versuche es nochmal zu lernen.... ;D ;D ;D
vielleicht solltest du dir die Möglichkeiten die dbLog anbietet einmal prüfen: deleteOldDays oder reduceLog