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 diecrons
-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 übercrons.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