MySQL 8 - Optimieren Sie alle Tabellen + Indizes

Nov 27 2020

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

1 RickJames Nov 29 2020 at 14:36

Mach dir keine Sorgen. InnoDB kümmert sich meistens um sich selbst. OPTIMIZEdrückt vorübergehend etwas verschwendeten Platz aus, aber es kommt zu neuem Abfall, wenn Einsätze / usw. auftreten. Der Leistungsvorteil von OPTIMIZEist nahezu gleich Null.

1 RolandoMySQLDBA Nov 27 2020 at 04:39

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 analysieren
  • Aug 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.