16.14 Structures de tables et d'index
16 Tables InnoDB
Manuel de Référence MySQL 4.1 : Version Française
. Structure physique d'un index . Bufferisation des insertions . Index hash adaptatifs ->Structure physique d'une ligne
|
16.14.4 Structure physique d'une ligne
-
Chaque ligne d'index de
InnoDB
contient un entête de 6 octets. L'entête
est utilisé pour lier des lignes consécutives ensembles, et aussi pour
le verrouillage de ligne.
-
Les lignes dans un index en grappe contient des champs pour toutes les
colonnes définies par l'utilisateur. De plus, il y a un champ de 6 octets
pour l'identification de transaction, et un champs de 7 octets pour le
pointeur d'annulation.
-
Si l'utilisateur n'a pas défini de clé primaire pour la table, chaque
ligne de l'index en grappe contient aussi une colonne supplémentaire
de 6 octets, qui sert d'identification.
-
Chaque ligne d'index secondaire contient aussi les champs définis
pour la clé de l'index en grappe.
-
Une ligne contient aussi un pointeur pour chaque champs de la ligne.
Si la taille totale des champs représentent moins de 128 octets, alors
le pointeur fait 1 octets, sinon 2.
-
En interne,
InnoDB
stocke les colonnes de taille fixe comme
CHAR(10)
dans un format à taille fixe.
InnoDB
supprime les espaces terminaux des colonnes
VARCHAR
. Notez que MySQL peut convertir en interne les colonnes
CHAR
en
VARCHAR
. Changement de type de colonne automatique .
-
Une valeur SQL
NULL
réserve 0 octets si elle est stockée dans une
colonne à taille variable. Dans une colonne à taille fixe, elle utilise toute
la largeur de la colonne. La raison de la réservation de toute la colonne
pour les valeurs
NULL
est que lors de la mise à jour de la colonne
depuis la valeur
NULL
vers une valeur non-nulle, il n'y aura pas
de fragementation sur le disque.
|