Ich bin etwas verwirrt über Seitenaufteilungen in MS SQL und suche nach einer endgültigen Antwort. Es scheint zwei Versionen der Geschichte zu geben:
1 - Der Füllfaktor wirkt sich nur darauf aus, wie voll die Seiten zum Zeitpunkt der Erstellung / Neuerstellung des Index sind. Seitenteile sind immer 50/50
2 - Der Füllfaktor beeinflusst auch, wie Seiten geteilt werden. Wenn also 70% Füllfaktor vorhanden sind und eine Seite überläuft, wird sie zu 70/30 aufgeteilt
Vielen Dank
sql-server
index
fill-factor
page-splits
Mashchax
quelle
quelle
Antworten:
Aus Books Online (Schwerpunkt meiner):
Der Füllfaktor gilt für die Blattseiten. PAD_INDEX bestimmt, was mit Nicht-Blattseiten passiert. Von derselben BoL-Seite:
Das Aufteilen von Seiten kann auf allen Ebenen des BTree erfolgen, einschließlich der Stammebene. Aufgrund des Fan-Outs ist die Häufigkeit, mit der Zwischenseiten geteilt werden, (typischerweise) eine Größenordnung geringer als die, mit der Blätter geteilt werden. Es gibt auch viel weniger Nicht-Blattseiten als Blattseiten. Folglich ist PAD_INDEX weniger besorgniserregend als FILLFACTOR. Es lohnt sich immer noch darüber nachzudenken, insbesondere bei zufällig eingefügten Indizes.
Während des Schreibens werden die Seiten zu 100% gefüllt. Dann werden sie 50/50 oder so nah wie möglich aufgeteilt, um sicherzustellen, dass jede Zeile vollständig auf einer einzelnen Seite enthalten ist. Ich glaube, die Aufteilung ist immer 50/50. Nachfolgende Schreibvorgänge können jedoch verzerrt sein, sodass eine der neuen Seiten viel schneller als die andere gefüllt wird.
quelle