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.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
Der Speicherplatz ist beim Erstellen, Neuerstellen oder Löschen von Indizes ein wichtiger Aspekt, der berücksichtigt werden muss. Unzureichender Speicherplatz kann die Leistung verringern oder sogar bewirken, dass der Indexvorgang einen Fehler erzeugt. Dieser Artikel enthält allgemeine Informationen, die Ihnen dabei helfen können, den für DDL-Vorgänge (Index Data Definition Language) erforderlichen Speicherplatz zu ermitteln.
Indexvorgänge ohne zusätzlichen Speicherplatz
Für die folgenden Indexvorgänge ist kein zusätzlicher Speicherplatz erforderlich:
ALTER INDEX REORGANIZE; Es ist jedoch Protokollplatz erforderlich.DROP INDEXwenn Sie einen nicht gruppierten Index löschen.DROP INDEXWenn Sie einen gruppierten Index offline ablegen, ohne dieMOVE TOKlausel anzugeben und nicht gruppierte Indizes nicht vorhanden sind.CREATE TABLE(PRIMARY KEYoderUNIQUEEinschränkungen)
Indexvorgänge, die zusätzlichen Speicherplatz erfordern
Für alle anderen Index-DDL-Vorgänge ist zusätzlicher temporärer Speicherplatz erforderlich, der während des Vorgangs verwendet werden soll, sowie dauerhafter Speicherplatz, der für das Speichern der neuen Indexstruktur(en) benötigt wird.
Beim Erstellen einer neuen Indexstruktur wird Speicherplatz sowohl für die alte Struktur (Quelle) als auch für die neue Struktur (Ziel) in den jeweiligen Dateien und Dateigruppen benötigt. Die alte Struktur wird erst freigegeben, wenn die Indexerstellungstransaktion bestätigt wird.
Die folgenden Index-DDL-Vorgänge erstellen neue Indexstrukturen und erfordern zusätzlichen Speicherplatz:
CREATE INDEXCREATE INDEX WITH DROP_EXISTINGALTER INDEX REBUILD-
ALTER TABLE ADD CONSTRAINT(PRIMARY KEYoderUNIQUE) -
ALTER TABLE DROP CONSTRAINT(PRIMARY KEYoderUNIQUE) wenn die Einschränkung auf einem gruppierten Index basiert -
DROP INDEX MOVE TO(Gilt nur für gruppierte Indizes.)
Temporärer Speicherplatz zum Sortieren
Neben dem für die Quell- und Zielstrukturen erforderlichen Speicherplatz ist temporärer Speicherplatz für die Sortierung erforderlich, es sei denn, der Abfrageoptimierer findet einen Ausführungsplan, der keine Sortierung erfordert.
Wenn Sortierung erforderlich ist, findet die Sortierung für die neuen Indizes nacheinander statt. Wenn Sie z. B. einen gruppierten Index und die zugehörigen nicht gruppierten Indizes mit einer einzigen Anweisung neu erstellen, werden die Indizes nacheinander sortiert. Daher muss der zusätzliche temporäre Speicherplatz, der für die Sortierung erforderlich ist, nur so umfangreich wie der größte Index im Vorgang sein. Dies ist fast immer der gruppierte Index.
Wenn die SORT_IN_TEMPDB-Option auf ON festgelegt ist, muss der größte Index in tempdb passen. Obwohl diese Option den temporären Speicherplatz erhöht, der für die Indexerstellung verwendet wird, kann die Zeit reduziert werden, die zum Erstellen eines Indexes erforderlich ist, wenn sich tempdb auf einem anderen Satz von Datenträgern als der Benutzerdatenbank befindet.
Wenn SORT_IN_TEMPDB auf OFF (standard) festgelegt ist, wird jeder Index, einschließlich partitionierter Indizes, in seinem Zielspeicherplatz sortiert, und nur der Speicherplatz für die neuen Indexstrukturen ist erforderlich.
Ein Beispiel für die Berechnung des Speicherplatzes finden Sie im Beispiel für den Indexspeicherplatz.
Temporärer Speicherplatz für Onlineindexvorgänge
Wenn Sie Indexvorgänge online ausführen, ist zusätzlicher temporärer Speicherplatz erforderlich.
Wenn ein gruppierter Index online erstellt, neu erstellt oder gelöscht wird, wird ein temporärer nicht gruppierter Index erstellt, um alte Lesezeichen neuen Lesezeichen zuzuordnen. Wenn die SORT_IN_TEMPDB-Option auf ON festgelegt ist, wird dieser temporäre Index in tempdb erstellt. Wenn SORT_IN_TEMPDB auf OFF eingestellt ist, wird dieselbe Dateigruppe oder dasselbe Partitionsschema wie der Zielindex verwendet. Der temporäre Zuordnungsindex enthält einen Datensatz für jede Zeile in der Tabelle. Sein Inhalt ist die Vereinigung der alten und der neuen Lesezeichenspalten, einschließlich uniqueifiers und Datensatzbezeichnern sowie einer einzigen Kopie jeder Spalte, die in beiden Lesezeichen verwendet wird. Weitere Informationen zu Onlineindexvorgängen finden Sie unter "Online ausführen von Indexvorgängen".
Hinweis
Die SORT_IN_TEMPDB Option kann nicht für DROP INDEX Anweisungen festgelegt werden. Der temporäre Zuordnungsindex wird immer in der gleichen Dateigruppe oder dem gleichen Partitionsschema wie der Zielindex erstellt.
Onlineindexvorgänge verwenden die Zeilenversionsverwaltung, um den Indexvorgang von den Auswirkungen der Änderungen zu isolieren, die von anderen Transaktionen vorgenommen wurden. Auf diese Weise ist es nicht erforderlich, freigegebene Sperren für Zeilen anzufordern, die gelesen wurden. Gleichzeitige Benutzeraktualisierungs- und Löschvorgänge während Onlineindexvorgängen erfordern Speicherplatz für Versionsdatensätze in tempdb. Weitere Informationen finden Sie unter Online ausführen von Indexvorgängen .
Verwandte Aufgaben
- Beispiel für Indexspeicherplatz
- Transaktionsprotokollspeicherplatz für Indexvorgänge
- Schätzen der Größe einer Tabelle
- Schätzen der Größe eines gruppierten Indexes
- Schätzen der Größe eines nicht gruppierten Indexes
- Schätzen der Größe eines Heaps