Kapitel 5: MySQL-Datenbankadministration 233
5.4.6.10 Tabellenoptimierung
Um fragmentierte Datens¨atze zu vereinigen und verschwendeten Speicherplatz zu beseitigen,
der sich durch L¨oschen und Aktualisieren von Datens¨atzen ergibt, lassen Sie myisamchk im
Wiederherstellungsmodus laufen:
shell> myisamchk -r tabelle
Auf dieselbe Weise k¨onnen Sie eine Tabelle optimieren, indem Sie das SQL-Statement
OPTIMIZE TABLE benutzen. OPTIMIZE TABLE f¨uhrt eine Reparatur der Tabelle und eine
Analyse der Schl¨ussel durch und sortiert den Indexbaum, um schnelleres Nachschlagen der
Schl¨ussel (Key Lookup) zu erm¨oglichen. Ausserdem schaltet es die M¨oglichkeit ungewoll-
ter Interaktionen zwischen einem Dienstprogramm und dem Server aus, weil der Server
bei der Benutzung von OPTIMIZE TABLE die ganze Arbeit verrichtet. Siehe Abschnitt 5.5.1
[OPTIMIZE TABLE], Seite 240.
myisamchk hat eine Anzahl weiterer Optionen, die Sie f¨ur die Verbesserung der Performance
einer Tabelle benutzen k¨onnen:
-S, --sort-index
-R index_nummer, --sort-records=index_nummer
-a, --analyze
Eine detaillierte Beschreibung der Optionen steht unter Siehe Abschnitt 5.4.6.1 [myisamchk
syntax], Seite 222.
5.4.7 Wartungsplan f¨ur Tabellen erstellen
Ab MySQL-Version 3.23.13 k¨onnen Sie MyISAM-Tabellen mit dem CHECK TABLE-Befehl
pr¨ufen. Siehe Abschnitt 5.4.4 [CHECK TABLE], Seite 219. Sie k¨onnen Tabellen mit dem
REPAIR TABLE-Befehl reparieren. Siehe Abschnitt 5.4.5 [REPAIR TABLE], Seite 221.
Es ist eine gute Idee, Tabellen¨uberpr¨ufungen auf regelm¨aßiger Basis durchzuf¨uhren statt da-
rauf zu warten, dass Probleme auftreten. F¨ur Wartungszwecke benutzen Sie myisamchk -s,
um Tabellen zu ¨uberpr¨ufen. Die -s-Option (Kurzform f¨ur --silent) veranlasst myisamchk,
im schweigsamen Modus zu laufen, wobei Meldungen nur ausgegeben werden, wenn Fehler
auftreten.
Ebenfalls eine gute Idee ist es, Tabellen zu ¨uberpr¨ufen, wenn der Server hoch f¨ahrt. Wenn
beispielsweise die Maschine mitten w¨ahrend einer Aktualisierung (Update) neu gebo otet
hat, m¨ussen Sie ¨ublicherweise alle Tabellen pr¨ufen, die betroffen sein k¨onnten. (Das ist
ein Fall von “erwarteter Tabellenbesch¨adigung”.) Sie k¨onnen safe_mysqld einen Test
hinzuf¨ugen, der myisamchk laufen l¨aßt, um alle Tabellen zu ¨uberpr¨ufen, die innerhalb der
letzten 24 Stunden ge¨andert wurden, wenn nach einem Reboot eine alte ‘.pid’-(process
ID)-Datei ¨ubrig blieb. (Die ‘.pid’-Datei wird von mysqld erzeugt, wenn er hoch f¨ahrt, und
entfernt, wenn er normal beendet wird. Die Anwesenheit einer ‘.pid’-Datei beim System-
start zeigt an, dass mysqld regelwidrig a/jointfilesconvert/293675/bgebrochen wurde.)
Eine noch b essere Testmethode besteht darin, jede Tabelle zu pr¨ufen, deren Zeit der letzten
¨
Anderung neuer ist als die der ‘.pid’-Datei.
Ausserdem sollten Sie Ihre Tabellen regelm¨aßig w¨ahrend der normalen Systemt¨atigkeit
pr¨ufen. Bei MySQL AB lassen wir einen cron-Job laufen, um alle wichtigen Tabellen
einmal pro Woche zu pr¨ufen, indem wir folgende Zeile in der ‘crontab’-Datei benutzen:
Comentarios a estos manuales