[+/-]
MySQL speichert seine Data Dictionary-Informationen über Tabellen
in .frm
-Dateien in Datenbankverzeichnissen.
Das gilt für alle Speicher-Engines von MySQL. Doch jede
InnoDB
-Tabelle hat auch einen eigenen Eintrag
im internen InnoDB
-Data Dictionary innerhalb
des Tablespace. Wenn MySQL eine Tabelle oder Datenbank löscht,
muss es sowohl die .frm
-Datei(en) als auch
die zugehörigen Einträge im InnoDB
-Data
Dictionary löschen. Daher dürfen Sie auch
InnoDB
-Tabellen nicht einfach durch Verschieben
der .frm
-Dateien von einer Datenbank in die
andere übertragen.
Jede InnoDB
-Tabelle besitzt einen speziellen,
so genannten geclusterten Index, der die
Daten über die Zeilen speichert. Wenn Sie einen PRIMARY
KEY
auf Ihrer Tabelle definieren, ist der Index dieses
Primärschlüssels der geclusterte Index.
Wenn Sie keinen PRIMARY KEY
für Ihre Tabelle
definieren, wählt MySQL den ersten
UNIQUE
-Index, der nur NOT
NULL
-Spalten hat, als Primärschlüssel aus, und
InnoDB
verwendet diesen als geclusterten Index.
Wenn die Tabelle keinen solchen Index besitzt, wird intern von
InnoDB
ein geclusterter Index generiert, in dem
die Zeilen nach der Zeilen-ID geordnet sind, die
InnoDB
den Zeilen derartiger Tabellen zuweist.
Die Zeilen-ID ist ein 6-Byte-Feld, das monoton wächst, wenn neue
Zeilen eingefügt werden. Somit stehen die nach Zeilen-ID
geordneten Zeilen physikalisch in der Reihenfolge ihrer
Einfügung.
Über einen geclusterten Index ist eine Zeile schnell zu erreichen, da die Zeilendaten auf derselben Seite liegen, zu der die Indexsuche hinführt. Wenn eine Tabelle groß ist, speichert die Clustered-Index-Architektur im Vergleich zu der traditionellen Lösung oft Plattenzugriffe. (In vielen Datenbanksystemen sind die Daten auf einer anderen Seite gespeichert als der Indexeintrag.)
In InnoDB
enthalten die Datensätze in
nicht-geclusterten Indizes (auch Sekundärindizes genannt) den
Primärschlüsselwert für die Zeile. InnoDB
benutzt diesen Primärschlüsselwert, um die Zeile in dem
geclusterten Index zu suchen. Beachten Sie: Wenn der
Primärschlüssel lang ist, brauchen die Sekundärindizes mehr
Platz.
InnoDB
vergleicht unterschiedlich lange
CHAR
- und VARCHAR
-Strings,
indem es die Längendifferenz im kürzeren String als mit
Leerzeichen ausgefüllt betrachtet.
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.