MySQL: Fragmentierte Tabellen finden und optimieren

MySQL: Fragmentierte Tabellen finden und optimieren

Um MySQL schneller zu machen, sollte man von Zeit zu Zeit fragmentierte Tabellen suchen und optimieren. Fragmentierte Tabellen können einen enormen Einfluß auf die MySQL-Performance haben, daher sollte man eine Optimierung allerspätestens dann durchführen, wenn man das Gefühl hat, daß die eigene Webseite nicht mehr so schnell ist, wie sie einmal war. Die Prüfung und Optimierung man in der MySQL-Shell machen oder auch in phpMyAdmin, was etwas komfortabler ist.

Fragmentierte Tabellen findet man mit der folgenden MySQL-Query:

SELECT TABLE_SCHEMA, TABLE_NAME, CONCAT(ROUND(data_length / ( 1024 * 1024 ), 2), 'MB') DATA, CONCAT(ROUND(data_free  / ( 1024 * 1024 ), 2), 'MB')FREE from information_schema.TABLES where TABLE_SCHEMA NOT IN ('information_schema','mysql') and Data_free > 0;

Die gefundenen Tabellen lassen sich mit der folgenden MySQL-Query optimieren (leider muß diese Query für jede Tabelle einzeln ausgeführt werden, daher ist bei vielen zu optimierenden Tabellen die OPTIMIZE TABLE-Funktion in phpMyAdmin zu empfehlen, oder man schreibt ein eigenes Skript):

OPTIMIZE TABLE <database_name>.<table name>;

Nach oben