Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, was der Füllfaktor ist und wie Sie einen Füllfaktor für einen Index in SQL Server 2014 mithilfe von SQL Server Management Studio oder Transact-SQL angeben.
Die Füllfaktoroption wird für eine Feinabstimmung der Indexdatenspeicherung und -leistung bereitgestellt. Wenn ein Index erstellt oder neu erstellt wird, bestimmt der Füllfaktorwert den Prozentsatz des Platzes auf jeder Blattebene, der mit Daten gefüllt werden soll, wobei der Rest auf jeder Seite als freier Platz für zukünftiges Wachstum reserviert wird. Wenn Sie beispielsweise einen Füllfaktorwert von 80 angeben, bedeutet das, dass 20 Prozent der Blattebenenseiten leer bleiben, um Platz für die Indexerweiterung bereitzustellen, während Daten zur zugrunde liegenden Tabelle hinzugefügt werden. Das leere Leerzeichen ist zwischen den Indexzeilen und nicht am Ende des Indexes reserviert.
Der Füllfaktorwert ist ein Prozentsatz von 1 bis 100, und der serverweite Standardwert ist 0, was bedeutet, dass die Seiten auf Blattebene auf Kapazität gefüllt sind.
Hinweis
Füllfaktorwerte 0 und 100 sind in allen Punkten gleich.
In diesem Themenbereich
Bevor Sie beginnen:
So geben Sie einen Füllfaktor in einem Index an, indem Sie Folgendes verwenden:
Bevor Sie beginnen
Überlegungen zur Leistung
Seitenaufteilungen
Ein richtig ausgewählter Füllfaktorwert kann potenzielle Seitenteilungen reduzieren, indem genügend Platz für die Indexerweiterung bereitgestellt wird, da daten der zugrunde liegenden Tabelle hinzugefügt werden. Wenn einer vollständigen Indexseite eine neue Zeile hinzugefügt wird, verschiebt das Datenbankmodul ungefähr die Hälfte der Zeilen auf eine neue Seite, um Platz für die neue Zeile zu schaffen. Diese Reorganisation wird als Seitenaufteilung bezeichnet. Eine Seitenteilung macht Platz für neue Datensätze, kann aber Zeit in Anspruch nehmen und ist ein ressourcenintensiver Vorgang. Außerdem kann dies zu Fragmentierungen führen, die zu erhöhten E/A-Vorgängen führen. Wenn häufige Seitenaufteilungen auftreten, kann der Index mithilfe eines neuen oder vorhandenen Füllfaktorwerts neu erstellt werden, um die Daten neu zu verteilen. Weitere Informationen finden Sie unter Neuorganisieren und Neuerstellen von Indizes.
Obwohl ein niedriger, nicht-null-Füllfaktorwert die Anforderung zum Teilen von Seiten verringern kann, während der Index wächst, erfordert der Index mehr Speicherplatz und kann die Lesegeschwindigkeit verringern. Selbst bei einer Anwendung mit vielen Einfüge- und Aktualisierungsvorgängen übersteigt die Anzahl der Datenbanklesevorgänge in der Regel die Anzahl der Datenbankschreibvorgänge um den Faktor 5 bis 10. Daher kann die Angabe eines anderen Füllfaktors als der Standard die Leistung des Datenbanklesevorgangs um eine Menge umgekehrt proportional zur Einstellung des Füllfaktors verringern. Beispielsweise kann ein Füllfaktorwert von 50 dazu führen, dass die Leseleistung der Datenbank um zwei Mal verringert wird. Die Leseleistung wird verringert, da der Index mehr Seiten enthält, wodurch die zum Abrufen der Daten erforderlichen Datenträger-E/A-Vorgänge erhöht werden.
Hinzufügen von Daten zum Ende der Tabelle
Ein anderer Füllfaktor ungleich 0 oder 100 kann für die Leistung gut sein, wenn die neuen Daten gleichmäßig über die gesamte Tabelle verteilt werden. Wenn jedoch alle Daten am Ende der Tabelle hinzugefügt werden, wird der leere Leerraum auf den Indexseiten nicht ausgefüllt. Wenn es sich bei der Indexschlüsselspalte beispielsweise um eine IDENTITÄTsspalte handelt, wird der Schlüssel für neue Zeilen immer erhöht, und die Indexzeilen werden am Ende des Indexes logisch hinzugefügt. Wenn vorhandene Zeilen mit Daten aktualisiert werden, die die Größe der Zeilen verlängern, verwenden Sie einen Füllfaktor von weniger als 100. Die zusätzlichen Bytes auf jeder Seite helfen, Seitenteilungen zu minimieren, die durch zusätzliche Länge in den Zeilen verursacht werden.
Sicherheit
Erlaubnisse
Erfordert ALTER-Berechtigung für die Tabelle oder Ansicht. Der Benutzer muss Mitglied der festen Serverrolle "sysadmin " oder der db_ddladmin und db_owner festen Datenbankrollen sein.
Verwendung von SQL Server Management Studio
So geben Sie einen Füllfaktor mithilfe des Tabellen-Designers an
Klicken Sie im Objekt-Explorer auf das Pluszeichen, um die Datenbank zu erweitern, die die Tabelle enthält, in der Sie den Füllfaktor eines Indexes angeben möchten.
Klicken Sie auf das Pluszeichen, um den Ordner "Tabellen " zu erweitern.
Klicken Sie mit der rechten Maustaste auf die Tabelle, in der Sie den Füllfaktor eines Indexes angeben möchten, und wählen Sie "Entwurf" aus.
Klicken Sie im Menü Tabellen-Designer auf Indizes/Schlüssel.
Wählen Sie den Index mit dem Füllfaktor aus, den Sie angeben möchten.
Erweitern Sie die Füllspezifikation, wählen Sie die Zeile " Füllfaktor " aus, und geben Sie den gewünschten Füllfaktor in die Zeile ein.
Klicken Sie auf Schließen.
Wählen Sie im Menü DateiSpeicherntable_name aus.
So geben Sie einen Füllfaktor in einem Index mithilfe des Objekt-Explorers an
Klicken Sie im Objekt-Explorer auf das Pluszeichen, um die Datenbank zu erweitern, die die Tabelle enthält, in der Sie den Füllfaktor eines Indexes angeben möchten.
Klicken Sie auf das Pluszeichen, um den Ordner "Tabellen " zu erweitern.
Klicken Sie auf das Pluszeichen, um die Tabelle zu erweitern, auf der Sie den Füllfaktor eines Indexes angeben möchten.
Klicken Sie auf das Pluszeichen, um den Ordner " Indizes " zu erweitern.
Klicken Sie mit der rechten Maustaste auf den Index mit dem Füllfaktor, den Sie angeben möchten, und wählen Sie "Eigenschaften" aus.
Wählen Sie unter "Seite auswählen" "Optionen" aus.
Geben Sie in der Zeile " Füllfaktor " den gewünschten Füllfaktor ein.
Klicke auf OK.
Verwenden von Transact-SQL
So geben Sie einen Füllfaktor in einem vorhandenen Index an
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.
Klicken Sie in der Standardleiste auf Neue Abfrage.
Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen. Im Beispiel wird ein vorhandener Index neu erstellt und der angegebene Füllfaktor während des Neuerstellungsvorgangs angewendet.
USE AdventureWorks2012; GO -- Rebuilds the IX_Employee_OrganizationLevel_OrganizationNode index -- with a fill factor of 80 on the HumanResources.Employee table. ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee REBUILD WITH (FILLFACTOR = 80); GO
Eine weitere Möglichkeit zum Angeben eines Füllfaktors in einem Index
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.
Klicken Sie in der Standardleiste auf Neue Abfrage.
Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.
USE AdventureWorks2012; GO /* Drops and re-creates the IX_Employee_OrganizationLevel_OrganizationNode index on the HumanResources.Employee table with a fill factor of 80. */ CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee (OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON, FILLFACTOR = 80); GO
Weitere Informationen finden Sie unter ALTER INDEX (Transact-SQL).