2009-07-11 6 views
3

Je suis nouveau à SQL Server 2008 facteur de remplissage, comme mentionné ici dans SQL Server 2008 BOL,facteur de remplissage de SQL Server 2008

http://msdn.microsoft.com/en-us/library/ms177459.aspx

Mes 2 confusions,

  1. Que remplir facteur s'applique à la page d'index? Ou s'applique à la fois à l'index et à la page de données? Au début, semble facteur de remplissage s'applique uniquement à la page d'index - "L'option de facteur de remplissage est fourni pour le réglage des données d'indexation et de performance", mais à la fin il est mentionné - "Si les lignes existantes seront mises à jour avec Les données qui allongent la taille des lignes utilisent un facteur de remplissage inférieur à 100. Les octets supplémentaires sur chaque page permettent de réduire au minimum les découpages de page provoqués par une longueur supplémentaire dans les lignes. ". Des commentaires? Indique si le facteur de remplissage s'applique uniquement à la reconstruction de l'index/create index (seul l'attribut rebuild/create utilise l'espace libre réservé par le facteur de remplissage) ou s'applique à toute opération d'insertion/mise à jour espace libre réservé par le facteur de remplissage)?

merci à l'avance, George

Répondre

8

FILLFACTOR applique les pages d'index seulement. Mais le problème ici est que si vous avez un index clusterisé (et la plupart des tables le font), votre FILLFACTOR s'appliquera essentiellement à vos données, puisque vos données résident à l'intérieur des nœuds feuilles de votre index clusterisé. Fondamentalement, si vous avez une table en lecture seule, définissez FILLFACTOR à 100 pour tous ses index. Cela vous permettra d'obtenir le tableau le plus petit et le plus rapide possible pour une structure d'index donnée. Sachez que si vous définissez FILLFACTOR sur 100 pour les index sur les données qui seront modifiées, vous vous configurez pour le fractionnement des pages et les performances éventuellement dégradées.

Un FILLFACTOR réglé trop haut peut affecter les performances lors des opérations d'insertion/mise à jour. Vous obtiendrez des divisions de page lorsque vous modifiez suffisamment de données. Cela fait partie de la nature intrinsèque du B-tree index structure - il équilibre automatiquement l'arbre. Si vous souhaitez ajuster le FILLFACTOR à un paramètre explicite, BOL indique que cela ne prend effet que lorsque vous reconstruisez l'index.

+0

Merci Dave, 1. "cela ne prend effet que lorsque vous reconstruisez l'index." - vous voulez dire le nouveau paramètre de facteur de remplissage (supposons que je modifie explicitement la valeur du facteur de remplissage) ne prend effet que lorsque nous reconstruisons l'index? 2. opération de mise à jour utilisera facteur de charge parce que la valeur d'index dans B-Tree de la colonne mise à jour peut changer, et peut être déplacé d'une page d'index vers une autre page d'index (donc si la page d'index Divisé)? – George2

+1

Oui. Si vous définissez FILLFACTOR sur un index avec ALTER INDEX, vous devrez le reconstruire pour que votre nouveau paramètre prenne effet. Une mise à jour peut définitivement provoquer une division de page dans le scénario que vous décrivez. –

+0

Salut Dave, désolé une question stupide, modifier l'index provoquera toujours la reconstruction de l'index? opération si lourde. – George2

0

Le facteur de remplissage donne des informations sur ... combien d'espace disponible dans une page SQL par défaut 8kb.Pour Exemple Supposons que FF = 20% signifie que 100-20 = 80% de l'espace est rempli. La valeur par défaut du facteur de remplissage est 100, 100-100 = 0% rempli d'espace