SQL Server - Comment les pages de données sont-elles stockées lors de l'utilisation d'un index clusterisé

13

J'ai récemment entendu dire que les pages de données d'un index cluster ne sont pas stockées de manière contiguë. Est-ce vrai?

Peut-être que les pages de données sont normalement stockées de manière contiguë avec quelques exceptions à la règle? Ou peut-être que j'ai mal entendu et que la page de données est toujours stockée de manière contiguë.

Merci beaucoup.

Cacahuète
la source
1
Books Online a fourni de très bons diagrammes qui montrent comment les pages sont physiquement stockées et comment l'arborescence B est disposée.
mrdenny

Réponses:

11

Les pages de données sont stockées de manière contiguë lorsque l'index est créé et lorsque l'index est reconstruit. Sinon, SQL Server tentera de conserver les pages dans l'ordre physique. Cela n'étant pas possible, un ordre logique est tenté. Vous pouvez obtenir des lacunes dans une table en raison d'autres écritures qui se produisent dans la base de données. SQL Server utilise des arborescences B + pour les index - le niveau feuille (données) de l'index contient les données mais est également une liste doublement liée qui contient des pointeurs vers les pages suivante et précédente. Cela rend moins important que la table soit 100% physiquement contiguë.

Jeremiah Peschka
la source