
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.