Kapitel 8: MySQL-Tab ellentypen 483
8.1 MyISAM-Tabellen
MyISAM ist der vorgabem¨aßige Tabellentyp in MySQL-Version 3.23. Er basiert auf dem
ISAM-Code und hat viele n¨utzliche Erweiterungen.
Der Index wird in einer Datei mit der Endung .MYI (MYIndex) gespeichert, die Daten
in einer Datei mit der Endung .MYD (MYData). Sie k¨onnen MyISAM-Tabellen mit dem
myisamchk-Dienstprogramm ¨uberpr¨ufen und reparieren. Siehe Abschnitt 5.4.6.9 [Repair],
Seite 230. Sie k¨onnen MyISAM-Tabellen mit myisampack komprimieren, damit sie viel
weniger Speicherplatz ben¨otigen. Siehe Abschnitt 5.7.4 [myisampack], Seite 272.
Folgende Neuerungen gibt es bei MyISAM:
• Es gibt einen Flag in der MyISAM-Datei, der anzeigt, ob die Tabelle korrekt geschlossen
wurde. Wenn mysqld mit --myisam-recover gestartet wird, werden MyISAM-Tabellen
beim
¨
Offnen automatisch gepr¨uft und / oder repariert, falls die Tabelle nicht korrekt
geschlossen wurde.
• Sie k¨onnen neue Zeilen in eine Tabelle, die keinerlei freie Bl¨ocke mitten in der Daten-
Datei hat, einf¨ugen (INSERT), w¨ahrend zeitgleich andere Threads aus der Tabelle lesen
(zeitgleiches Einf¨ugen). Ein freier Block kann entstehen, wenn eine Aktualisierung einer
Zeile dynamischer L¨ange, die viele Daten enth¨alt, mit weniger Daten durchgef¨uhrt wird,
oder wenn Zeilen gel¨oscht werden. Wenn alle freien Bl¨ocke aufgebraucht sind, k¨onnen
alle zuk¨unftigen Einf¨ugeoperationen auf die zeitgleiche Art erfolgen.
• Unterst¨utzung f¨ur große Dateien (63-Bit) auf Dateisystemen / Betriebssystemen, die
große Dateien unterst¨utzen.
• Alle Daten werden mit dem niedrigen Byte zuerst gespeichert. Das macht die Daten
Maschinen- und Betriebssystem-unabh¨angig. Die einzige Anforderung ist, dass die
Maschine zweien-komplement¨are vorzeichenb ehaftete Ganzzahlen (two’s-complement
signed integers) benutzt, was bei jeder Maschine in den letzten 20 Jahren der Fall
war), sowie das IEEE-Fließkomma-Format (bei Mainstream-Maschinen absolut do-
minierend). Die einzige Art von Maschinen, die vielleicht keine Bin¨arkompatibilit¨at
unterst¨utzen, sind eingebettete Systeme (Embedded Systems), weil diese manchmal
eigent¨umliche Prozessoren haben.
Wenn Daten mit dem niedrigen Byte zuerst gespeichert werden, ergibt sich daraus kein
großer Geschwindigkeitsnachteil. Die Bytes in einer Tabellenzeile sind normalerweise
unzusammenh¨angend und man ben¨otigt kaum mehr Ressourcen, um ein unzusam-
menh¨angendes Byte in Reihenfolge statt in umgekehrter Reihenfolge zu lesen. Der
tats¨achliche Hole-Spaltenwert-Code ist im Vergleich zu sonstigem Code ebenfalls nicht
zeitkritisch.
• Alle Zahlenschl¨ussel werden mit dem hohen Byte zuerst gespeichert, um bessere Index-
Kompression zu erzielen.
• Die interne Handhabung einer AUTO_INCREMENT-Spalte. MyISAM aktualisiert diese
automatisch bei INSERT / UPDATE. Der AUTO_INCREMENT-Wert kann mit myisamchk
zur¨uckgesetzt werden. Das macht AUTO_INCREMENT-Spalten schneller (mindestens
10%), und alten Zahlen werden im Gegensatz zum alten ISAM nicht wieder benutzt.
Beachten Sie, dass das alte Verhalten immer noch da ist, wenn ein AUTO_INCREMENT
am Ende eines mehrteiligen Schl¨ussels definiert wird.
Komentarze do niniejszej Instrukcji