Jede MyISAM
-Indexdatei
(.MYI
-Datei) besitzt im Header einen
Zähler, an dem sich erkennen lässt, ob eine Tabelle
ordnungsgemäß geschlossen wurde. Liefert CHECK
TABLE
oder myisamchk folgende
Warnung, so bedeutet dies, dass der Zähler nicht mehr
synchron läuft:
clients are using or haven't closed the table properly
Diese Warnung bedeutet zwar nicht unbedingt, dass die Tabelle beschädigt ist, aber Sie sollten zumindest eine Überprüfung vornehmen.
Der Zähler funktioniert folgendermaßen:
Wenn eine Tabelle in MySQL zum ersten Mal geändert wird, wird ein Zähler im Header der Indexdateien inkrementiert.
Bei nachfolgenden Änderungen bleibt der Zähler gleich.
Wenn die letzte Instanz einer Tabelle geschlossen wird
(wegen einer FLUSH TABLES
-Operation
oder weil im Tabellen-Cache kein Platz mehr ist), wird der
Zähler dekrementiert, wenn die Tabelle an irgendeinem
Punkt geändert wurde.
Wenn Sie die Tabelle reparieren oder prüfen und für gut befinden, wird der Zähler wieder auf Null zurückgesetzt.
Um Abstimmungsprobleme mit anderen Prozessen zu verhindern, welche die Tabelle ebenfalls überprüfen, wird der Zähler beim Schließen nicht dekrementiert, wenn er den Wert null hatte.
Anders ausgedrückt: Der Zähler kann unter folgenden Bedingungen nicht mehr synchron sein:
Eine MyISAM
-Tabelle wird ohne
vorheriges LOCK TABLES
und
FLUSH TABLES
kopiert.
MySQL ist zwischen einer Änderung und dem endgültigen Schließen der Tabelle abgestürzt. (Beachten Sie, dass auch in diesem Fall die Tabelle immer noch in Ordnung sein kann, da MySQL zwischen zwei Anweisungen immer alles schreibt.)
Eine Tabelle wurde von myisamchk --recover oder myisamchk --update-state geändert, während sie gleichzeitig von mysqld benutzt wurde.
Mehrere mysqld-Server benutzen die
Tabelle und einer von ihnen hat REPAIR
TABLE
oder CHECK TABLE
auf
ihr ausgeführt, während die anderen Server gerade auf
sie zugriffen. In diesem Fall ist die Verwendung von
CHECK TABLE
sicher, obwohl Sie
vielleicht von anderen Servern eine Warnung bekommen.
REPAIR TABLE
sollten Sie allerdings
vermeiden, denn wenn ein Server die Datendatei durch eine
neue ersetzt, können die anderen Server dies nicht
wissen.
Normalerweise sollte man ein Data Directory nicht mit mehreren Servern gemeinsam nutzen. Weitere Hinweise finden Sie unter Abschnitt 5.13, „Mehrere MySQL-Server auf derselben Maschine laufen lassen“.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.