Une situation courante dans les applications de base de données apparaît lorsque la clé primaire est un identifiant unique, et que les nouvelles lignes sont insérées dans un ordre ascendant. Par conséquent, les insertions dans l'index en grappe ne nécessitent pas de lectures aléatoires dans le disque.
D'un autre coté, les index secondaires sont généralement
non-uniques, et les insertions surviennent dans un ordre
aléatoire. Cela causerait de nombreux accès disques
aléatoire, si InnoDB
de disposait pas d'un
mécanisme spécial.
Si une ligne doit être insérée dans un index secondaire non
unique, InnoDB
vérifie si la page d'index
fait partie du buffer. Dans ce cas, InnoDB
va
faire directement l'insertion dans une structure de buffer
destinée à l'insertion. Le buffer d'insertion est conservé
petit, pour qu'il reste dans le buffer général, et les
insertions sont faites très vite.
Le buffer d'insertion est périodiquement fusionné avec l'arbre d'index secondaires dans la base. Souvent, nous fusionnons plusieurs insertions dans la même page de l'arbre d'index, et donc, nous économisons des accès disques. Il a été mesuré que les insertions sont jusqu'à 15 fois plus rapides de cette fa¸on.
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.