[+/-]
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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.