Freigeben über


Indexspeicherplatz (Beispiel)

Wenn ein Index erstellt, neu erstellt oder abgelegt wird, ist Festplattenspeicherplatz für die alten (Quell-) und neuen (Ziel)-Strukturen in den entsprechenden Dateien und Dateigruppen erforderlich. Die Zuordnung der alten Struktur wird erst aufgehoben, nachdem die Indexerstellungstransaktion den Commitvorgang ausgeführt hat. Es kann auch zusätzlicher temporärer Speicherplatz für Sortiervorgänge erforderlich sein. Weitere Informationen finden Sie unter "Speicherplatzanforderungen für DDL-Indexvorgänge".

In diesem Beispiel werden speicherplatzanforderungen zum Erstellen eines gruppierten Indexes bestimmt.

Gehen Sie davon aus, dass die folgenden Bedingungen erfüllt sind, bevor Sie den gruppierten Index erstellen:

  • Die vorhandene Tabelle (Heap) enthält 1 Millionen Zeilen. Jede Zeile ist 200 Bytes lang.

  • Nicht gruppierter Index A enthält 1 Millionen Zeilen. Jede Zeile ist 50 Byte lang.

  • Nicht gruppierter Index B enthält 1 Millionen Zeilen. Jede Zeile ist 80 Byte lang.

  • Die Indexerstellungsspeicheroption ist auf 2 MB festgelegt.

  • Für alle vorhandenen und neuen Indizes wird ein Füllfaktorwert von 80 verwendet. Dies bedeutet, dass die Seiten 80 Prozent voll sind.

    Hinweis

    Durch das Erstellen eines gruppierten Indexes müssen die beiden nicht gruppierten Indizes neu erstellt werden, um den Zeilenindikator durch den neuen gruppierten Indexschlüssel zu ersetzen.

Festplattenspeicherberechnungen für einen Offlineindexvorgang

In den folgenden Schritten werden sowohl temporärer Speicherplatz, der während des Indexvorgangs verwendet werden soll, als auch dauerhafter Speicherplatz zum Speichern der neuen Indizes berechnet. Die dargestellten Berechnungen sind ungefähr; Die Ergebnisse werden aufgerundet und berücksichtigen nur die Größe der Indexblattebene. Die Tilde (~) wird verwendet, um ungefähre Berechnungen anzugeben.

  1. Bestimmen Sie die Größe der Quellstrukturen.

    Heap: 1 million * 200 bytes ~ 200 MB

    Nicht gruppierter Index A: 1 Million * 50 Bytes / 80% ~ 63 MB

    Nicht gruppierter Index B: 1 Million * 80 Bytes / 80% ~ 100 MB

    Gesamtgröße vorhandener Strukturen: 363 MB

  2. Bestimmen Sie die Größe der Zielindexstrukturen. Gehen Sie davon aus, dass der neue gruppierte Schlüssel 24 Byte lang ist, einschließlich eines Eindeutigkeitsindikators. Der Zeilenindikator (8 Byte lang) in beiden nicht gruppierten Indizes wird durch diesen gruppierten Schlüssel ersetzt.

    Gruppierter Index: 1 Million * 200 Bytes / 80% ~ 250 MB

    Nicht gruppierter Index A: 1 Million * (50 - 8 + 24) Bytes / 80% ~ 83 MB

    Nicht gruppierter Index B: 1 Million * (80 - 8 + 24) Bytes / 80% ~ 120 MB

    Gesamtgröße neuer Strukturen: 453 MB

    Der gesamt erforderliche Speicherplatz für die Unterstützung der Quell- und Zielstrukturen für die Dauer des Indexvorgangs beträgt 816 MB (363 + 453). Der zurzeit den Quellstrukturen zugeordnete Speicherplatz wird nach der Bestätigung des Indexvorgangs freigegeben.

  3. Ermitteln Sie zusätzlichen temporären Speicherplatz für die Sortierung.

    Speicheranforderungen werden für die Sortierung in tempdb (mit SORT_IN_TEMPDB auf EIN festgelegt) und für die Sortierung am Zielort (mit SORT_IN_TEMPDB auf OFF festgelegt) angezeigt.

    1. Wenn SORT_IN_TEMPDB auf "EIN" festgelegt ist, muss tempdb über ausreichend Speicherplatz verfügen, um den größten Index (1 Million * 200 Bytes ~ 200 MB) zu speichern. Der Füllfaktor wird im Sortiervorgang nicht berücksichtigt.

      Zusätzlicher Festplattenspeicher (im tempdb-Speicherort), der dem Wert der Serverkonfigurationsoption Konfiguriere den Index-Erstellungsspeicher entspricht, beträgt 2 MB.

      Gesamtgröße des temporären Speicherplatzes mit SORT_IN_TEMPDB auf „Ein“ gesetzt: ~202 MB.

    2. Wenn SORT_IN_TEMPDB auf OFF (Standardeinstellung) festgelegt ist, wird der für den neuen Index in Schritt 2 bereits berücksichtigte Speicherplatz von 250 MB für die Sortierung verwendet.

      Zusätzlicher Speicherplatz (im Zielspeicherort) entspricht dem Wert der Serverkonfigurationsoption „Index erstellen konfigurieren“ = 2 MB.

      Gesamtgröße des temporären Speicherplatzes, wenn SORT_IN_TEMPDB auf OFF gesetzt ist = 2 MB.

Bei Verwendung von tempdb wären insgesamt 1018 MB (816 + 202) erforderlich, um die gruppierten und nicht gruppierten Indizes zu erstellen. Obwohl die Verwendung von tempdb den temporären Speicherplatz erhöht, der zum Erstellen eines Indexes verwendet wird, kann die Zeit reduziert werden, die zum Erstellen eines Index erforderlich ist, wenn tempdb sich auf einer anderen Gruppe von Datenträgern befindet als die Benutzerdatenbank. Weitere Informationen zur Verwendung von tempdb finden Sie unter SORT_IN_TEMPDB Option For Indexes.

Ohne die Verwendung von tempdb wären insgesamt 818 MB (816+ 2) erforderlich, um die gruppierten und nicht gruppierten Indizes zu erstellen.

Festplattenspeicherberechnungen für einen Onlinecluster-Indexvorgang

Wenn Sie einen gruppierten Index online erstellen, ablegen oder neu erstellen, ist zusätzlicher Speicherplatz erforderlich, um einen temporären Zuordnungsindex zu erstellen und zu verwalten. Dieser temporäre Zuordnungsindex enthält einen Eintrag für jede Zeile in der Tabelle, und sein Inhalt ist die Vereinigung der alten und neuen Lesezeichen-Spalten.

Um den für einen Onlinecluster-Indexvorgang benötigten Speicherplatz zu berechnen, führen Sie die schritte aus, die für einen Offlineindexvorgang angezeigt werden, und fügen Sie diese Ergebnisse den Ergebnissen des folgenden Schritts hinzu.

  • Legen Sie den Speicherplatz für den temporären Zuordnungsindex fest.

    In diesem Beispiel ist das alte Lesezeichen die Zeilen-ID (RID) des Heaps (8 Byte), und das neue Lesezeichen ist der Clusterschlüssel (24 Byte einschließlich eines uniqueifier). Es gibt keine überlappenden Spalten zwischen den alten und neuen Textmarken.

    Temporäre Zuordnungsindexgröße = 1 Million * (8 Bytes + 24 Bytes) / 80% ~ 40 MB.

    Dieser Speicherplatz muss dem erforderlichen Speicherplatz am Zielspeicherort hinzugefügt werden, wenn SORT_IN_TEMPDB auf "AUS" festgelegt ist, oder zu tempdb, wenn SORT_IN_TEMPDB auf "EIN" festgelegt ist.

Weitere Informationen zum temporären Zuordnungsindex finden Sie unter Datenträgerspeicheranforderungen für Index-DDL-Vorgänge.

Zusammenfassung des Speicherplatzes

In der folgenden Tabelle sind die Ergebnisse der Festplattenspeicherberechnungen zusammengefasst.

Indexvorgang Speicherplatzanforderungen für die Speicherorte der folgenden Strukturen
Offline-Indexvorgang mit SORT_IN_TEMPDB = Aktiviert Gesamtspeicher während des Vorgangs: 1018 MB:

-Vorhandene Tabellen und Indizes: 363 MB*

-
tempdb: 202 MB*

-Neue Indizes: 453 MB

Gesamtspeicherbedarf nach dem Vorgang: 453 MB
Offline-Indexvorgang mit SORT_IN_TEMPDB = OFF Gesamtspeicher während des Vorgangs: 816 MB:

-Vorhandene Tabellen und Indizes: 363 MB*

-Neue Indizes: 453 MB

Gesamtspeicherbedarf nach dem Vorgang: 453 MB
Online-Indexvorgang mit SORT_IN_TEMPDB = AN Gesamtspeicher während des Vorgangs: 1058 MB:

-Vorhandene Tabellen und Indizes: 363 MB*

- tempdb (einschließlich Zuordnungsindex): 242 MB*

-Neue Indizes: 453 MB

Gesamtspeicherbedarf nach dem Vorgang: 453 MB
Online-Indexoperation mit SORT_IN_TEMPDB = OFF Gesamtspeicher während des Vorgangs: 856 MB:

-Vorhandene Tabellen und Indizes: 363 MB*

-Temporärer Zuordnungsindex: 40 MB*

-Neue Indizes: 453 MB

Gesamtspeicherbedarf nach dem Vorgang: 453 MB

*Dieser Speicherplatz wird freigegeben, nachdem der Indexvorgang abgeschlossen ist.

In diesem Beispiel wird kein zusätzlicher temporärer Speicherplatz in tempdb für Versionsdatensätze berücksichtigt, die durch gleichzeitige Benutzeraktualisierungs- und Löschvorgänge erstellt wurden.

Speicherplatzanforderungen für Index-DDL-Vorgänge

Transaktionsprotokollspeicherplatz für Indexvorgänge