Ich habe eine Tabelle, die pro Minute etwa 10-15 Tausend Einträge erhält. Jeder Eintrag wird beim Eingang mit dem aktuellen Zeitstempel markiert. Die Tabelle ist eine MEMORY
Tabelle, da der Datenverlust keine Sorge ist.
Jede Minute habe ich ein Skript, das die folgende Abfrage ausführt:
DELETE FROM tracker WHERE post_time < DATE_SUB(NOW(), INTERVAL 15 MINUTE)
Diese Abfrage dauert ungefähr 1-2 Sekunden, was nicht schlecht ist, aber es scheint, dass diese Art von Abfrage (Löschen von allem älteren als X
) viel schneller ausgeführt werden sollte, wenn sie gegen eine MEMORY
Tabelle ausgeführt wird. Es gibt auch einen entsprechenden Spike auf der CPU, der sich jede Minute wie ein Dorn im Auge abhebt.
Gibt es Optimierungen, die ich an meiner Abfrage vornehmen kann, um sie effizienter auszuführen?
5 Stimmen
Hast du einen Index auf der Zeitstempelspalte?
0 Stimmen
Letztendlich kannst du die Zeit in PHP berechnen?