MySQL 8 - Optimieren Sie alle Tabellen + Indizes
Ich habe eine Reihe von Tabellen (InnoDB) in mehreren Datenbanken (MySQL 8), auf denen ich täglich Garbage Collect-Skripte ausführe, um veraltete Datensätze zu entfernen, die nicht mehr benötigt werden. Alle Tabellen haben Indizes.
Wäre es sinnvoll / überhaupt vorteilhaft, alle Tabellen, beispielsweise jede Woche, zu optimieren, um die Leistung zu steigern? Wenn ja, gibt es einen guten Befehl zum Ausführen?
Ich habe es versucht
sudo mysqlcheck -o --all-databases
Erhalten Sie jedoch die folgende Fehlermeldung:
note : Table does not support optimize, doing recreate + analyze instead
status : OK
Antworten
Mach dir keine Sorgen. InnoDB kümmert sich meistens um sich selbst. OPTIMIZE
drückt vorübergehend etwas verschwendeten Platz aus, aber es kommt zu neuem Abfall, wenn Einsätze / usw. auftreten. Der Leistungsvorteil von OPTIMIZE
ist nahezu gleich Null.
Diese Nachrichten sind für InnoDB normal. Sie können dies fortsetzen.
Die InnoDB Storage Engine funktioniert OPTIMIZE TABLE mydb.mytable;
so
ALTER TABLE mydb.mytable ENGINE=InnoDB;
ANALYZE TABLE mydb.mytable;
Ich habe dies im Laufe der Jahre erwähnt:
Sep 27, 2015
: Wie kann ich Tabellen in MySQL defragmentieren?Jun 24, 2015
: Richtlinie zum Aufrufen von Optimize Table nach Alter Table?Feb 27, 2013
: Was ist der Unterschied zwischen Tabelle optimieren und Tabelle in MySQL analysierenAug 04, 2011
: Optimieren der InnoDB-Standardeinstellungen
Ich empfehle, täglich oder wöchentlich zu analysieren
sudo mysqlcheck --analyze --all-databases
Führen Sie dann die Optimierung einmal im Monat oder einmal im Quartal durch.