| 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.
 |