REPAIR TABLE und OPTIMIZE TABLE

15. September 2014 um 18:52 Uhr von Wolfgang Stengel zu MySQL
Beim Arbeiten mit sehr großen Datenmengen passiert es mir ab und zu dass MySQL merkwürdige Fehlermeldungen beim Zugriff auf Tabellen ausspuckt, wie z.B. "Table xxx is corrupt" oder "Table XXX doesn't exist" (obwohl SHOW TABLES die Tabelle anzeigt). Dies kann durch Bugs in MySQL auftreten ohne dass man etwas falsch gemacht oder der Server Probleme mit der Hardware hat.

Abhilfe schaffen die beiden Befehle REPAIR TABLE und OPTIMIZE TABLE. REPAIR TABLE versucht korrupte Tabellen zu reparieren und erledigt meistens einen guten Job, wenn das Kind schon in den Brunnen gefallen ist. OPTIMIZE TABLE ordnet Daten in der internen MySQL-Struktur neu an (was auch die Performance verbessert, besonders wenn man große Datenmengen verändert oder gelöscht hat) und hilft dadurch dabei Fehler von vorneherein zu vermeiden.

In Projekten mit großen Tabellen habe ich immer einen Crobjob eingerichtet, der einmal pro Tag alle kritischen Tabellen prophylaktisch repariert und optimiert. Dies kann pro Tabelle schonmal eine oder zwei Minuten dauern, schadet jedoch mitten in der Nacht niemandem und lohnt sich langfristig. Trotzdem sind Backups natürlich immer wichtig.
PHP Wolfgang Stengel