Le facteur de remplissage n'entre en jeu que lorsqu'un index est créé ou reconstruit. C'est la quantité de consommation pour l'index des pages de niveau feuille qui sont remplies lors de ces opérations. ( voir la note ci-dessous pour plus de précisions sur les niveaux de page concernés )
Lorsqu'il y a une commande de données (DML à INSERT
, UPDATE
et / ouDELETE
), il se produira aux indices correspondants concernés. En d'autres termes, si vous avez une page qui est remplie à 20% et que vous insérez des données dans cette page, la page contiendra plus de 20% des données (disons 35%, par exemple). Faites une autre insertion, maintenant la page est remplie à 64%. Reconstruisez l'index et les pages de niveau feuille contiendront désormais relativement le pourcentage d'espace que vous spécifiez (ou implicitement la valeur par défaut pour le serveur).
( Remarque : lorsque vous ne spécifiez PAD_INDEX
pas être ON
, le facteur de remplissage est uniquement appliqué aux pages de niveau feuille. Mais lorsque vous définissez PAD_INDEX = ON
, le facteur de remplissage sera pris en compte pour les pages de niveau intermédiaire de l'index. La valeur par défaut estOFF
)
La raison d'ajuster le facteur de remplissage (au lieu d'utiliser la valeur par défaut 100/0) est de sorte que vous minimisiez les fractionnements de page lors de l'insertion ou de la mise à jour des données. Mais gardez à l'esprit que rien n'est gratuit. Plus le facteur de remplissage est faible, plus les données d'espace devraient normalement occuper. Si vous gardez un espace de page libre de 80% pour vos index, ils consommeront une quantité d'espace disque relativement plus importante, ce qui peut conduire à plus de lectures.
D'après ma compréhension, lorsque les données seront insérées, il y aura environ 20% de données dans les pages. Cependant, lorsque les données sont mises à jour, elles s'étendent à plus de 20% de l'index, jusqu'à le remplir et à générer un fractionnement de page, n'est-ce pas?
Lorsque des données sont insérées, elles seront insérées dans les index appropriés sur la page appropriée. Cela pourrait et très probablement entraînerait une consommation de pages supérieure au facteur de remplissage.
Un fractionnement de page se produit lorsque de nouvelles données sont ajoutées à une page d'index complète. SQL Server divisera ensuite la page et placera environ la moitié des données de la page complète dans une nouvelle page. Encore une fois, le facteur de remplissage n'entre pas en jeu ici.
Une raison légitime d'abaisser le facteur de remplissage serait de minimiser les séparations de pages, minimisant ainsi la fragmentation des pages d'index.