La valeur par défaut du FILLFACTOR est 0, ce qui signifie que lors de la création d'un index, les pages du niveau feuille sont remplies à 100% de leur capacité.
Lors de l'insertion d'une donnée, une page doit être scindée en deux (séparation de page). Si on effectue souvent des insertion/suppression/modification sur une table, la fragmentation des index peut s'accentuer.
J'ai dès lors utilisé des facteurs de rempllissage de 90% sur des index apliqués sur une colonne. Si l'index contient plus de deux colonnes, j'utilise des facteurs de remplissage allant de 85 à 75% selon les cas, car j'ai remarqué que les index sur plusieurs colonnes se fragmentent plus rapidement.
Cependant, le texte suivant que l'on trouve dans la documentation de SQL me fait douter "Le paramètre du taux de remplissage s'applique uniquement lorsque l'index est créé ou regénéré. Le SQL Server 2005 Database Engine (Moteur de base de données de 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 Database Engine (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."
Est-ce que cela signifie que quelques soit le taux de remplissage (fillfactor) utilisé, SQL effectuera une séparation de page afin de conserver ce même taux de remplissage ?
Si tel est le cas, quelle est la bonne façon de procéder ?
Autre question, exise-t'il des dynamic management view qui m'indiquerait, par exemple, que sont les index les plus utilisés ? Les tables les plus souvent mises à jours ?
Merci à l'avance.
Partager