Skip to content

Optimierung und automatische Bereinigung der cron_history-Tabelle

Die Tabelle cron_history, in der die letzten Ausführungen der Crons gespeichert werden, wächst mit der Zeit unkontrolliert an. Dies kann zu erheblichen Performance-Problemen führen und die Datenbank unnötig aufblähen.


🧩 Aktuelles Problem

  • In alten Installationen sammeln sich schnell Millionen von Einträgen in der cron_history.
  • Die Tabelle kann dadurch mehrere GB Daten umfassen.
  • Bei jedem Login ins QUIQQER-Backend wird auf diese Tabelle zugegriffen, um den Cron-Status zu prüfen.
  • Dabei wird die Tabelle offenbar vollständig durchlaufen, was zu extrem langen Ladezeiten führen kann (mehrere Sekunden bis Minuten).
  • Es ist unklar, ob die cron_history für diese Prüfung überhaupt notwendig ist oder ob dafür nicht auf die crons-Tabelle zurückgegriffen werden kann.

ToDos

  • Technische Prüfung, ob cron_history überhaupt für die Cron-Statusprüfung (z. B. beim Login) erforderlich ist oder ob das auch direkt über crons.lastexec möglich ist.
  • Falls notwendig, die Zugriffe auf cron_history optimieren (z. B. Index, Query-Anpassung, Limitierung).
  • Implementierung eines automatischen Bereinigungsmechanismus für alte Einträge:
    • Ein eigener Cronjob soll regelmäßig Einträge löschen, die älter als z. B. 8 Wochen sind (Standardwert, konfigurierbar).
    • Dabei muss mindestens der jeweils letzte Eintrag pro Cron-Typ erhalten bleiben, um die Nachvollziehbarkeit bei selten laufenden Crons (monatlich, halbjährlich) zu gewährleisten.
  • Ggf. prüfen, ob die Tabelle cron_history überhaupt erforderlich ist oder durch ein effizienteres Logging ersetzt werden kann.
von Henning Leutz bearbeitet