:: DEVELOPER ZONE
MySQL enregistre la structure de table dans le fichier .frm,
du dossier de données. Mais les tables InnoDB ont aussi leur propre
entrée dans les tables internes InnoDB. Lorsque MySQL efface une
table ou une base, il efface le ou les fichiers .frm et aussi
les lignes correspondantes dans les tables d'administration InnoDB.
C'est la raison qui fait que vous ne pouvez pas déplacer les tables
InnoDB entre les bases simplement en dépla¸ant le fichier .frm,
et pourquoi DROP DATABASE ne fonctionnait pas sous InnoDB
en MySQL versions <= 3.23.43.
Chaque table InnoDB a un index spécial appelé un index en grappe, où les
données des lignes sont enregistrées. Si vous définissez une clé primaire
pour votre table PRIMARY KEY, alors l'index de la clé primaire
de la table sera un index en grappe.
Si vous ne définissez pas de clé primaire pour votre table, InnoDB
va générer un index en grappe, ou les lignes sont ordonnées dans
l'ordre des identifiants que InnoDB assigne aux lignes de la table.
L'identifiant de ligne vaut 6 octets, et s'accroît au fur et à mesure
que les lignes sont ajoutées. Les lignes sont alors ordonnées dans
leur ordre d'insertion.
Accéder à une ligne via l'index en grappe est rapide, car la ligne de données sera dans la même page que l'index. Dans de nombreuses bases, les données sont traditionnellement stockées dans un autre endroit. Si la table est grand, l'index en grappe économise de nombreux accès disques, comparativement aux solutions traditionnelles.
Les lignes des index qui ne sont pas en grappe (ce sont les index
secondaires) dans InnoDB, contiennent la valeur de la clé primaire
de la ligne. InnoDB utilise cette clé primaire pour rechercher la valeur
de la ligne dans l'index en grappe. Notez que si la clé primaire est longue,
les index secondaires utiliseront plus de place.
InnoDB compare les chaînes CHAR et VARCHAR de
différentes longues en complétant la chaîne la plus courte avec des
espaces.
© 1995-2005 MySQL AB. All rights reserved.
