Kapitel 8: MySQL-Tab ellentypen 491
• Auf einfache Weise einen Satz von Log-Tabellen verwalten. Beispielsweise k¨onnen Sie
Daten aus unterschiedlichen Monaten in separaten Dateien sp eichern, einige davon mit
myisampack komprimieren und dann eine MERGE-Tabelle erzeugen, um sie wie eine zu
benutzen.
• Mehr Geschwindigkeit. Sie k¨onnen eine große Nur-Lese-Tabelle nach bestimmten Kri-
terien aufspalten und die verschiedenen Tabellenteile auf unterschiedlichen Festplatten
speichern. Eine
MERGE
-Tabelle darauf k¨onnte viel schneller sein als die große Tabelle
zu benutzen. (Nat¨urlich k¨onnen Sie auch ein RAID benutzen, um dieselben Vorteile
zu erzielen.)
• Effizientere Suchen durchf¨uhren. Wenn Sie genau wissen, wonach Sie suchen, k¨onnen
Sie mit einigen Anfragen in lediglich einer der aufgespaltenen Tab ellen suchen und die
MERGE-Tabelle f¨ur andere benutzen. Es k¨onnen sogar viele unterschiedliche MERGE-
Tabellen aktiv sein, m¨oglicherweise mit Dateien, die sich ¨uberlappen.
• Effizientere Reparaturen durchf¨uhren. Es ist leichter, die individuellen Dateien zu
reparieren, die auf eine MERGE-Datei gemappt sind, als eine wirklich große Datei zu
reparieren.
• Sofortiges Mappen vieler Dateien als einer. Eine MERGE-Tabelle benutzt den Index der
individuellen Tabellen. Sie muss selbst keinen eigenen Index warten. Dadurch k¨onnen
Sie MERGE-Tabellensammlungen SEHR schnell erzeugen oder neu mappen. Beachten
Sie, dass Sie die Schl¨usseldefinitionen angeben, wenn Sie eine MERGE-Tabelle erzeugen!
• Wenn Sie einen Satz von Tabellen bei Bedarf oder im Stapel zu einer großen Tabelle
vereinigen, sollten Sie statt dessen bei Bedarf eine MERGE-Tabelle darauf erzeugen. Das
ist viel schneller und spart eine Menge Speicherplatz.
• Umgehen der Dateigr¨oßengrenze des Betriebssystems.
• Sie k¨onnen ein Alias / Synonym f¨ur eine Tabelle erzeugen, indem Sie sie einfach
ein MERGE ¨uber eine Tabelle benutzen. Das sollte keine sp¨urbaren Performance-
Auswirkungen haben (nur eine Reihe indirekter Aufrufen und memcpy’s bei jedem
Lesen).
Die Nachteile von MERGE-Tabellen sind:
• Sie k¨onnen nur identische MyISAM-Tabellen f¨ur eine MERGE-Tabelle benutzen.
• AUTO_INCREMENT-Spalten werden bei INSERT nicht automatisch aktualisiert.
• REPLACE funktioniert nicht.
• MERGE-Tabellen benutzen mehr Datei-Deskriptoren. Wenn Sie eine MERGE benutzen,
die ¨uber 10 Tabellen mappt, und 10 Benutzer diese benutzen, ben¨otigen Sie 10 * 10 +
10 Datei-Deskriptoren (10 Daten-Dateien f¨ur 10 Benutzer und 10 gemeinsam genutzte
Index-Dateien).
• Lesevorg¨ange von Schl¨usseln sind langsamer. Wenn Sie eine Leseoperation auf einen
Schl¨ussel durchf¨uhren, muss der MERGE-Handler ein Lesen auf alle zugrunde liegenden
Tabellen ausf¨uhren, um zu pr¨ufen, welche am n¨achsten zum angegebenen Schl¨ussel
passt. Wenn Sie ein ’Lese n¨achsten’ ausf¨uhren, muss der MERGE-Handler die Lese-
Puffer durchsuchen, um den n¨achsten Schl¨ussel zu finden. Erst wenn ein Schl¨usselpuffer
aufgebraucht ist, muss der Handler den n¨achsten Schl¨usselblock lesen. Das macht
MERGE-Schl¨ussel bei eq_ref-Suchen viel langsamer, aber nicht viel langsamer bei ref-
Suchen. Siehe Abschnitt 6.2.1 [EXPLAIN], Seite 329.
Kommentare zu diesen Handbüchern