Datensätze von InnoDB
-Tabellen haben
folgende Merkmale:
Jeder Indexeintrag hat einen sechs Bytes großen Header, der benutzt wird, um aufeinanderfolgende Datensätze zu verknüpfen, und auch in Zeilensperren zum Einsatz kommt.
Einträge im geclusterten Index enthalten Felder für alle benutzerdefinierten Spalten. Zusätzlich gibt es ein sechs Bytes großes Feld für die Transaktions-ID und ein sieben Bytes großes für den Rollpointer.
Wenn für eine Tabelle kein Primärschlüssel definiert wurde, enhält jeder geclusterte Indexeintrag auch ein sechs Bytes großes Feld mit der Zeilen-ID.
Jeder Sekundärindexeintrag enthält auch alle Felder, die für den geclusterten Indexschlüssel definiert worden sind.
Ein Datensatz enthält auch einen Zeiger auf die einzelnen Felder des Datensatzes. Wenn deren Gesamtlänge 128 Bytes nicht übersteigt, ist der Zeiger ein Byte, ansonsten zwei Bytes groß. Das Array dieser Zeiger bezeichnet man als Record Directory. Der Bereich, auf den sie zeigen, ist der Datenteil des Datensatzes.
Intern speichert InnoDB
Zeichenspalten
fester Breite, wie beispielsweise
CHAR(10)
, in einem Format mit fester
Länge. InnoDB
kappt Leerzeichen am Ende
von VARCHAR
-Spalten.
Ein SQL-NULL
-Wert reserviert 1 oder 2
Bytes im Record Directory und null Bytes im Datenteil des
Eintrags, wenn er in einer Spalte mit variabler Länge
gespeichert ist. In einer Spalte fester Länge reserviert er
diese festgelegte Länge auch für
NULL
-Werte, damit eine Aktualisierung,
die die Spalte von NULL
auf einen anderen
Wert setzt, vor Ort ohne Fragmentierung der Indexseite
ausgeführt werden kann.
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.