Wenn ich Indizes für Tabellen erzeuge, rate ich normalerweise, was Fill Factor
auf der Basis einer begründeten Schätzung der Verwendung der Tabelle (viele Lesevorgänge oder viele Schreibvorgänge) basieren soll.
Gibt es einen wissenschaftlicheren Weg, um einen genaueren Fill Factor
Wert zu bestimmen?
Sie könnten versuchen, eine große Liste realistischer Operationen auszuführen und E / A-Warteschlangen für die verschiedenen Aktionen zu betrachten.
Es gibt viele Variablen, die das regeln, wie die Größe jeder Zeile und die Anzahl der Schreibvorgänge gegenüber Lesevorgängen.
Grundsätzlich: hoher Füllfaktor = schneller lesen, niedriger = schneller schreiben.
Es ist jedoch nicht ganz so einfach, da fast alle Schreibvorgänge für eine Teilmenge von Zeilen gelten, die zuerst nachgeschlagen werden müssen.
Zum Beispiel: Setzen Sie einen Füllfaktor auf 10% und jede Aktualisierung einer einzelnen Zeile dauert 10-mal so lang, um die Zeile zu finden, die sich ändert, obwohl eine Seitenaufteilung dann sehr unwahrscheinlich ist.
Im Allgemeinen sehen Sie Füllfaktoren 70% (sehr hohe Schreibtiefe) bis 95% (sehr hohe Lesewerte).
Es ist ein bisschen wie eine Kunstform.
Ich finde, dass eine gute Denkweise für Füllfaktoren wie Seiten in einem Adressbuch ist - je enger Sie die Adressen packen, desto schwieriger ist es, sie zu ändern, aber je schlanker das Buch. Ich denke, ich erklärte es besser auf meinem Blog .
Ich würde eher der Meinung sein, dass Sie, wenn Sie nach Leistungsverbesserungen suchen, Ihre Zeit viel besser woanders verbringen können, indem Sie Ihr Schema optimieren, Ihre Abfragen optimieren und eine gute Indexabdeckung sicherstellen. Der Füllfaktor ist eines der Dinge, um die Sie sich nur kümmern müssen, wenn Sie wissen , dass alles andere in Ihrem System optimal ist. Ich kenne niemanden, der das sagen kann.
Tags und Links sql-server fillfactor