Freigeben über


Angeben des Füllfaktors für einen Index

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

In diesem Artikel wird beschrieben, was der Füllfaktor ist und wie Sie einen Füllfaktor für einen Index mithilfe von SQL Server Management Studio oder Transact-SQL angeben.

Die Option für den Füllfaktor wird zur Optimierung der Speicherung und Leistung von Indizes 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 Speicherplatz für zukünftiges Wachstum reserviert wird. Beispielsweise bedeutet die Angabe eines Füllfaktorwerts von 80, dass 20 Prozent der einzelnen Blattebenen leer bleiben und Platz für das Datenwachstum bieten. Das leere Leerzeichen wird auf jeder Seite des Indexes 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.

Note

Die Füllfaktorwerte 0 und 100 sind in jeder Hinsicht identisch.

In diesem Thema

Bevor Sie beginnen

Überlegungen zur Leistung

Seitenaufteilungen

Wird einer vollständigen Indexseite eine neue Zeile hinzugefügt, verschiebt die Datenbank-Engine ungefähr die Hälfte der Zeilen auf eine neue Seite, um Platz für die neue Zeile zu schaffen. Diese Neuorganisation ist bekannt als Seitenaufteilung. Eine Seitenteilung macht Platz für neue Zeilen, aber wenn sie in der Mitte des Indexes auftritt, kann es zeitaufwendig dauern und ist ein ressourcenintensiver Vorgang. Außerdem kann dies zu Fragmentierungen führen, die die Effektivität von Seitenlesevorgängen bei großen Indexscans reduzieren.

Ein gut gewählter Füllfaktorwert kann Seitenaufteilungen reduzieren, indem genügend Platz für die Indexerweiterung bereitgestellt wird, wenn Daten in der Mitte des Indexes hinzugefügt werden. Wenn sich seitenaufteilungen auf die Leistung auswirken, kann der Index mithilfe eines neuen oder vorhandenen Füllfaktorwerts im Bereich von 70 bis 95 Prozent neu erstellt werden. Verringern Sie den Füllfaktor jedoch nicht unnötig, oder legen Sie ihn zu niedrig fest. Weitere Informationen finden Sie unter Optimieren der Indexwartung, um die Abfrageleistung zu verbessern und den Ressourcenverbrauch zu verringern.

Die meisten Workloads werden optimal mit dem Standardfüllfaktor (100 Prozent) ausgeführt. Mit einem reduzierten Füllfaktor benötigt der Index mehr Speicherplatz, Arbeitsspeicher und E/A, wodurch die Leistung verringert werden kann. Auch bei einer schreibintensiven Arbeitslast übersteigen die Lesevorgänge der Datenbank in der Regel die Schreibvorgänge um das Fünf- bis Zehnfache. Daher kann die Angabe eines anderen Füllfaktors als der Standard die Ressourcenauslastung um einen umgekehrt proportionalen Betrag zur Einstellung des Füllfaktors erhöhen.

Beispielsweise verdoppelt ein Füllfaktorwert von 50 die Datenträger-E/A und den Arbeitsspeicher, der zum Lesen und Zwischenspeichern derselben Datenmenge erforderlich ist.

Am Ende der Tabelle hinzugefügte Daten

Ein niedrigerer Füllfaktor kann seitenaufteilungen reduzieren und die Leistung verbessern, wenn die neuen Daten gleichmäßig über den Gesamten Index verteilt werden. Wenn jedoch neue Daten am Ende des Indexes hinzugefügt werden, wird das leere Leerzeichen auf den Indexseiten möglicherweise nicht ausgefüllt. Wenn es sich bei der Indexschlüsselspalte beispielsweise um eine IDENTITY Spalte handelt, wird der Schlüssel für neue Zeilen immer erhöht, und die Indexzeilen werden am Ende des Indexes logisch hinzugefügt.

Security

Permissions

Erfordert die ALTER Berechtigung für die Tabelle oder Ansicht. Der Benutzer muss Mitglied der sysadmin festen Serverrolle oder der db_ddladmin und db_owner festen Datenbankrollen sein.

Verwendung von SQL Server Management Studio

So geben Sie einen Füllfaktor mit dem Tabellen-Designer an

  1. Klicken Sie im Objekt-Explorer auf das Pluszeichen, um die Datenbank mit der Tabelle zu erweitern, für die Sie den Füllfaktor eines Indexes angeben möchten.

  2. Klicken Sie auf das Pluszeichen, um den Ordner Tabellen zu erweitern.

  3. Klicken Sie mit der rechten Maustaste auf die Tabelle, für die Sie den Füllfaktor eines Indexes angeben möchten, und wählen Sie die Option Entwurf aus.

  4. Klicken Sie im Menü Tabellen-Designer auf Indizes/Schlüssel.

  5. Wählen Sie den Index mit dem Füllfaktor aus, den Sie angeben möchten.

  6. Erweitern Sie Füllspezifikation, wählen Sie die Zeile Füllfaktor aus, und geben Sie den gewünschten Füllfaktor in die Zeile ein.

  7. Klicken Sie auf Schließen.

  8. Klicken Sie im Menü Datei auf SaveTabellenname.

So geben Sie einen Füllfaktor in einem Index mit dem Objekt-Explorer an

  1. Klicken Sie im Objekt-Explorer auf das Pluszeichen, um die Datenbank mit der Tabelle zu erweitern, für die Sie den Füllfaktor eines Indexes angeben möchten.

  2. Klicken Sie auf das Pluszeichen, um den Ordner Tabellen zu erweitern.

  3. Klicken Sie auf das Pluszeichen, um die Tabelle zu erweitern, für die Sie den Füllfaktor eines Indexes angeben möchten.

  4. Klicken Sie auf das Pluszeichen, um den Ordner Indizes zu erweitern.

  5. Klicken Sie mit der rechten Maustaste auf den Index mit dem Füllfaktor, den Sie angeben möchten, und wählen Sie Eigenschaften.

  6. Wählen Sie unter Seite auswählendie Option Optionenaus.

  7. Geben Sie in der Zeile Füllfaktor den gewünschten Füllfaktor ein.

  8. Klicke auf OK.

Verwenden von Transact-SQL

So geben Sie einen Füllfaktor für einen vorhandenen Index an

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen. Im folgenden Beispiel wird ein vorhandener Index neu erstellt und der angegebene Füllfaktor während der Neuerstellung angewendet.

    USE AdventureWorks2022;  
    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  
    

Alternative Möglichkeit zum Angeben eines Füllfaktors in einem Index

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    USE AdventureWorks2022;  
    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).