2016-06-06 10 views
0

Ich habe eine Tabelle Hexe ist der Kern meines Systems, alle Ergebnisse für meine Kunden angezeigt werden dort gespeichert. Es wächst ziemlich schnell, also sollte ich alle 3 Stunden die Datensätze löschen, die älter als X sind, um die Leistung zu verbessern.Mysql Leistung: Löschen vs Löschen + Optimieren

Ist es genug, nur diese Datensätze zu löschen oder sollte ich Optimize table nach den Löschungen ausführen?

Ich überlege, sie alle 3 Stunden zu löschen und Optimize nur einmal pro Tag und in der Nacht auszuführen, aber ich bin mir nicht sicher, ob das Löschen ausreicht, um die Leistung zu verbessern.

+0

Wenn Sie eine Autoinkrement-ID als Primärschlüssel haben, bezweifle ich, dass Sie überhaupt einen Unterschied sehen (es könnte von anderen Indizes abhängen, die Sie haben und verwenden). Sie können es natürlich nur testen, und da 5.7.4 'Tabelle optimieren 'nicht mehr gesperrt wird, würde es auch nicht viel schaden (es wird natürlich immer noch i/o verwenden), so dass Sie beide Wege gehen können . Aber ich denke, im Allgemeinen würde ich es nur während der normalen nächtlichen Wartung machen (ohne natürlich Ihre spezifische Konfiguration zu kennen). – Solarflare

+0

Ich würde dafür ein [event] (http://stackoverflow.com/a/32508935) verwenden. Denken Sie an Ereignisse als geplante wiederkehrende gespeicherte Prozeduren ohne den Ärger von Cron. Sie sind gesetzt und vergessen. Es gibt also den Nachteil, zu vergessen, dass sie ausgeführt werden. Erinnere dich immer wieder daran: "Oh, ich habe es vergessen, ich habe Ereignisse, die das tun." – Drew

Antwort

2

Wenn Sie InnoDB verwenden, stören Sie nicht mit OPTIMIZE TABLE; es ist die Mühe nicht wert.

Wenn Sie immer die "ältesten" Zeilen löschen, gibt es einen viel schnelleren und effizienteren Weg. Und es braucht von Natur aus keine OPTIMIZE. Partitionieren Sie die Tabelle über Datum und DROP PARTITION. Jede Partition wird separat strukturiert sein; Wenn also eine Partition gelöscht wird, wird der Rest der Tabelle nicht fragmentiert.

Weitere Einzelheiten finden Sie unter my blog.