Taux de remplissage
L'option de facteur de remplissage permet de paramétrer précisément les performances et le stockage des données d'index. Lorsqu'un index est créé ou régénéré, la valeur du facteur de remplissage détermine le pourcentage d'espace sur chaque page de niveau feuille à remplir de données, réservant ainsi un pourcentage de l'espace disponible à une croissance future. Par exemple, un facteur de remplissage de 80 signifie que 20 % de chaque page de niveau feuille reste vide afin que les index puissent s'étendre à mesure que des données sont ajoutées à la table sous-jacente. L'espace libre est réservé entre les lignes d'index sur chaque page plutôt qu'à la fin de la page.
Le facteur de remplissage est un pourcentage compris entre 1 et 100. La valeur par défaut de 0 à l'échelle du serveur constitue la meilleure solution dans la plupart des cas. Quand le facteur de remplissage est défini avec la valeur 0, le niveau feuille est intégralement rempli.
Remarque : |
---|
Les valeurs de facteurs de remplissage 0 et 100 sont identiques à tous égards. |
Vous pouvez utiliser les instructions CREATE INDEX ou ALTER INDEX pour définir la valeur du facteur de remplissage d'index distincts. Pour modifier la valeur par défaut au niveau du serveur, utilisez la procédure stockée système sp_configure. Pour afficher la valeur du facteur de remplissage d'un ou plusieurs index, utilisez l'affichage catalogue sys.indexes.
Important : |
---|
Le paramètre du facteur de remplissage s'applique uniquement lorsque l'index est créé ou régénéré. Le Moteur de base de données SQL Server 2005 ne conserve pas dynamiquement le pourcentage spécifié d'espace libre dans les pages. Tenter de préserver l'espace supplémentaire sur les pages de données serait en opposition avec l'objectif initial du recours au facteur de remplissage car le Moteur de base de données devrait procéder à des fractionnements de pages afin de conserver le pourcentage d'espace disponible (déterminé par ce même facteur de remplissage) sur chaque page à mesure que des données sont entrées. |
Considérations relatives aux performances
Fractionnement de pages
Une valeur de facteur de remplissage correctement choisie peut réduire le risque de fractionnements de pages en fournissant suffisamment d'espace pour l'extension des index qui résulte de l'ajout de données à la table sous-jacente.
Si vous ajoutez une ligne à une page d'index complète, Moteur de base de données déplace environ la moitié des lignes vers une nouvelle page afin de faire place à la nouvelle ligne. Ce type de réorganisation est désigné par l'expression « fractionnement de pages ». Un fractionnement de pages fait de la place pour de nouveaux enregistrements, mais cette opération peut prendre du temps et est gourmande en ressources. En outre, il peut causer une fragmentation qui accroît les opérations d'E/S. Lorsque des fractionnements de pages fréquents se produisent, vous pouvez reconstruire l'index à l'aide d'une valeur de facteur de remplissage nouvelle ou existante afin de redistribuer les données. Pour plus d'informations, consultez Réorganisation et reconstruction d'index.
Bien qu'une faible valeur de facteur de remplissage, autre que 0, puisse réduire la nécessité de fractionner les pages à mesure que l'index croît, celui-ci a besoin de davantage d'espace de stockage et peut diminuer les performances de lecture. Même dans le cas d'une application orientée vers de nombreuses opérations d'insertion et de mise à jour, le nombre de lectures effectuées dans la base de données est généralement 5 à 10 fois plus élevé que le nombre d'écritures. Ainsi, un facteur de remplissage différent de la valeur par défaut peut diminuer les performances de lecture dans la base de données par un coefficient inversement proportionnel au facteur de remplissage défini. Par exemple, un facteur de remplissage de 50 peut diminuer de moitié les performances de lecture dans la base de données. Les performances de lecture diminuent car l'index contient davantage de pages, ce qui augmente le nombre d'opérations d'E/S nécessaires à l'extraction des données.
Ajout de données à la fin de la table
Un facteur de remplissage différent de zéro peut être bénéfique pour les performances si les nouvelles données sont distribuées de manière égale dans toute la table. Toutefois, si toutes les données sont ajoutées à la fin de la table, l'espace vide ne sera pas rempli. Par exemple, si la colonne d'index clé est une colonne IDENTITY, la clé des nouvelles lignes augmente toujours et les lignes sont ajoutées logiquement à la fin de la table. Dans ce cas, les fractionnements de pages ne provoqueront pas de dégradation des performances. Vous devez utiliser le facteur de remplissage par défaut (zéro) ou spécifier un facteur de remplissage de 100 afin de remplir le niveau feuille.
Voir aussi
Concepts
Création d'index (Moteur de base de données)
Option fill factor
Autres ressources
ALTER INDEX (Transact-SQL)
CREATE INDEX (Transact-SQL)
sys.indexes (Transact-SQL)
sp_configure (Transact-SQL)