Structures des index cluster
Dans SQL Server, les index sont organisés en arborescences binaires. Chaque page d'une arborescence binaire d'index s'appelle un nœud d'index. Le nœud supérieur d'une arborescence binaire est le nœud racine. Les nœuds du niveau inférieur de l'index sont appelés les nœuds feuille. Tous les niveaux d'index situés entre la racine et les nœuds feuille s'appellent des niveaux intermédiaires. Dans un index cluster, les nœuds feuille contiennent les pages de données de la table sous-jacente. Les nœuds racine et de niveau intermédiaire contiennent les pages d'index dans lesquelles se trouvent les lignes d'index. Chaque ligne d'index contient une valeur de clé et un pointeur vers une page de niveau intermédiaire dans l'arborescence binaire ou vers une ligne de données dans le niveau feuille de l'index. Les pages de chaque niveau de l'index sont liées dans une liste à double liaison.
Un index cluster possède une ligne dans sys.partitions, où index_id a pour valeur 1 pour chaque partition utilisée par celui-ci. Par défaut, un index cluster possède une seule partition. Lorsqu'un index cluster détient plusieurs partitions, chacune d'elles possède une structure d'arborescence binaire qui contient ses données. Par exemple, si un index cluster possède quatre partitions, il existe quatre structures d'arborescence binaire, à raison d'une dans chaque partition.
Suivant les types de données de l'index cluster, chaque structure d'index cluster possède une ou plusieurs unités d'allocation pour le stockage et la gestion des données d'une partition spécifique. Au minimum, chaque index cluster détient une unité d'allocation IN_ROW_DATA par partition. L'index cluster possède également une unité d'allocation LOB_DATA par partition s'il contient des colonnes LOB (Large Object). En outre, il détient une unité d'allocation ROW_OVERFLOW_DATA par partition s'il contient des colonnes de longueur variable qui dépassent la limite de taille de ligne de 8 060 octets. Pour plus d'informations sur les unités d'allocation, consultez Organisation des tables et des index.
Les pages de la chaîne de données et les lignes qu'elles rassemblent sont organisées en fonction de la valeur de la clé d'index cluster. Toutes les insertions sont faites à l'endroit où la valeur de clé de la ligne insérée correspond parfaitement à la séquence de tri parmi les lignes existantes. Les collections de pages de l'arborescence binaire ont pour point d'ancrage des pointeurs de page dans la vue système sys.system_internals_allocation_units.
Important
La vue système sys.system_internals_allocation_units est réservée à un usage exclusivement interne de MicrosoftSQL Server. La compatibilité future n'est pas garantie.
Dans un index cluster, la colonne root_page de sys.system_internals_allocation_units pointe sur la partie supérieure de l'index d'une partition spécifique. SQL Server parcourt l'index de haut en bas à la recherche de la ligne correspondant à une clé d'index cluster. Pour trouver une série de clés, SQL Server parcourt l'index à la recherche de la valeur de clé de départ de la série, puis explore les pages de données à l'aide des pointeurs suivants ou précédents. Pour trouver la première page de la chaîne de pages de données, SQL Server suit les pointeurs situés le plus à gauche du nœud racine de l'index.
L'illustration suivante montre la structure d'un index cluster dans une partition unique.