Partager via


Index de hachage

Les index sont utilisés comme points d’entrée pour les tables optimisées en mémoire. La lecture de lignes à partir d’une table nécessite un index pour localiser les données en mémoire.

Un index de hachage se compose d’une collection de compartiments organisés dans un tableau. Une fonction de hachage associe les clés d'index aux compartiments correspondants dans l'index de hachage. La figure suivante montre trois clés d’index mappées à trois compartiments différents dans l’index de hachage. À des fins d’illustration, le nom de la fonction de hachage est f(x).

Clés d’index associées à différents compartiments.

La fonction de hachage utilisée pour les index de hachage présente les caractéristiques suivantes :

  • SQL Server a une fonction de hachage utilisée pour tous les index de hachage.

  • La fonction de hachage est déterministe. La même clé d'index est toujours associée au même seau dans l'index de hachage.

  • Plusieurs clés d’index peuvent être associées au même compartiment de hachage.

  • La fonction de hachage est équilibrée, ce qui signifie que la distribution des valeurs de clé d’index sur les compartiments de hachage suit généralement une distribution de Poisson.

    La distribution de Poisson n’est pas une distribution même. Les valeurs de clé d’index ne sont pas distribuées uniformément dans les compartiments de hachage. Par exemple, une distribution Poisson de n clés d’index distinctes sur n compartiments de hachage entraîne environ un tiers de compartiments vides, un tiers des compartiments contenant une clé d’index et le troisième contenant deux clés d’index. Un petit nombre de compartiments contiendra plus de deux clés.

Si deux clés d’index sont mappées au même compartiment de hachage, une collision de hachage se produit. Un grand nombre de collisions de hachage peuvent avoir un impact sur les performances des opérations de lecture.

La structure d’index de hachage en mémoire se compose d’un tableau de pointeurs de mémoire. Chaque compartiment correspond à un décalage dans ce tableau. Chaque compartiment du tableau pointe vers la première ligne de ce compartiment de hachage. Chaque rangée du seau pointe vers la rangée suivante, ce qui entraîne une chaîne de rangées pour chaque seau de hachage, comme le montre la figure suivante.

Structure d’index de hachage en mémoire.

La figure comporte trois seaux avec des rangées. Le deuxième seau du haut contient les trois rangées rouges. Le quatrième compartiment contient la ligne bleue unique. Le seau du bas contient les deux rangées vertes. Il peut s’agir de versions différentes de la même ligne.

Pour plus d’informations sur les index des tables optimisées en mémoire, consultez Recommandations relatives à l’utilisation d’index sur les tables Memory-Optimized.

Voir aussi

Indices sur les tables Memory-Optimized