Einzelnen Beitrag anzeigen

BigAl

Registriert seit: 6. Sep 2008
Ort: Kehl
515 Beiträge
 
Delphi 12 Athens
 
#20

AW: Datenlogger mit MSSQL und Index-Fragmentierung

  Alt 19. Jul 2025, 21:45
Ist die ID dann überhaupt noch erforderlich?

Brauchst Du zwingend eine ID und hast zwingend jede Sekunde einen Satz, dann könnte die ID auch ein UnixTimeStamp sein (Sekunden seit 1.1.1970), das geht dann bis zum dem 19. Januar 2038, 03:14:07 UTC gut. Bei BIGINT hättest Du noch etwa 584 Milliarden Jahren Zeit, bis ein Überlaufproblem auftritt.
Die ID brauche ich aktuell wirklich nicht. Die ist eigentlich nur da, damit ich eine eindeutige Referenz auf die Datensätze habe. Theoretisch können doppelte Datensatze entstehen. Auch bei UTC, wenn z.B. die Zeit durch den Zeit-Server korrigiert wird.

Ansonsten ist es eigentlich relativ egal welchen Weg man geht. Sobald man den Zeitstempel in der Log-Datei hat muss ein Index verwaltet werden. Das mit dem Reorganize ist an sich auch kein Problem, solange ich das nicht durch die Logger-Task oder den Vordergrund ausführen lasse. Das läuft halt mehrere Minuten. Verloren gehen würde aber eh nichts, da der Datensammler selbst in eine Queue schreibt und eine separate Writer-Threat sich um die Datenbank kümmert. Sowohl die Writer-Threat als auch den Vordergrund möchte ich halt zu keiner Zeit (aus o.g. Gründen) blockieren.

Und ja, es muss jede Sekunden geschrieben werden. Das ist das obere Limit. Ich habe auch einen Kunden in den USA da muss ich mit 250 ms erfassen. Da ist aber ein "großer" Server dahinter und den Ablauf habe ich da etwas anders implementiert. Es geht bei der Software um die Überwachung von Sicherheitsrelevanten Funktionen. Den Sicherheitsteil übernimmt aber eine Steuerung (fehlersichere Siemens SPS). Das Delphi-Programm wird zum Visualisieren, Dokumentieren und Parametrieren verwendet.
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)
  Mit Zitat antworten Zitat