Speicherplatzanforderungen für Index-DDL-VorgängeDisk Space Requirements for Index DDL Operations

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions)

Der Speicherplatz ist beim Erstellen, Neuerstellen oder Löschen von Indizes ein wichtiger Aspekt, der berücksichtigt werden muss.Disk space is an important consideration when you create, rebuild, or drop indexes. Unzureichender Speicherplatz kann die Leistung verringern oder sogar bewirken, dass der Indexvorgang einen Fehler erzeugt.Inadequate disk space can degrade performance or even cause the index operation to fail. Dieses Thema stellt allgemeine Informationen bereit, die Sie beim Ermitteln des Speicherplatzes unterstützen können, der für DDL-Vorgänge (Data Definition Language) des Indexes erforderlich ist.This topic provides general information that can help you determine the amount of disk space required for index data definition language (DDL) operations.

Indexvorgänge, für die kein zusätzlicher Speicherplatz erforderlich istIndex Operations That Require No Additional Disk Space

Für die folgenden Indexvorgänge ist kein zusätzlicher Speicherplatz erforderlich:The following index operations require no additional disk space:

  • ALTER INDEX REORGANIZE; jedoch ist Speicherplatz im Protokoll erforderlich.ALTER INDEX REORGANIZE; however, log space is required.

  • DROP INDEX, wenn Sie einen nicht gruppierten Index löschen.DROP INDEX when you are dropping a nonclustered index.

  • DROP INDEX, wenn Sie einen gruppierten Index offline löschen, ohne die MOVE TO-Klausel anzugeben, und es sind keine nicht gruppierten Indizes vorhanden.DROP INDEX when you are dropping a clustered index offline without specifying the MOVE TO clause and nonclustered indexes do not exist.

  • CREATE TABLE (PRIMARY KEY- oder UNIQUE-Einschränkung)CREATE TABLE (PRIMARY KEY or UNIQUE constraints)

Indexvorgänge, für die zusätzlicher Speicherplatz erforderlich istIndex Operations That Require Additional Disk Space

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.All other index DDL operations require additional temporary disk space to use during the operation, and permanent disk space to store the new index structure or structures.

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.When a new index structure is created, disk space for both the old (source) and new (target) structures is required in their appropriate files and filegroups. Die Zuordnung der alten Struktur wird erst aufgehoben, nachdem die Indexerstellungstransaktion den Commitvorgang ausgeführt hat.The old structure is not deallocated until the index creation transaction commits.

Die folgenden Index-DDL-Vorgänge erstellen neue Indexstrukturen und erfordern zusätzlichen Speicherplatz:The following index DDL operations create new index structures and require additional disk space:

  • CREATE INDEXCREATE INDEX

  • CREATE INDEX WITH DROP_EXISTINGCREATE INDEX WITH DROP_EXISTING

  • ALTER INDEX REBUILDALTER INDEX REBUILD

  • ALTER TABLE ADD CONSTRAINT (PRIMARY KEY oder UNIQUE)ALTER TABLE ADD CONSTRAINT (PRIMARY KEY or UNIQUE)

  • ALTER TABLE DROP CONSTRAINT (PRIMARY KEY oder UNIQUE), wenn die Einschränkung auf einem gruppierten Index basiertALTER TABLE DROP CONSTRAINT (PRIMARY KEY or UNIQUE) when the constraint is based on a clustered index

  • DROP INDEX MOVE TO (Gilt nur für gruppierte Indizes.)DROP INDEX MOVE TO (Applies only to clustered indexes.)

Temporärer Speicherplatz für SortiervorgängeTemporary Disk Space for Sorting

Neben dem für die Quell- und Zielstrukturen benötigten Speicherplatz ist temporärer Speicherplatz für Sortiervorgänge erforderlich, es sei denn, der Abfrageoptimierer ermittelt einen Ausführungsplan, für den keine Sortierung erforderlich ist.Besides the disk space required for the source and target structures, temporary disk space is required for sorting, unless the query optimizer finds an execution plan that does not require sorting.

Wenn Sortierung erforderlich ist, findet die Sortierung für die neuen Indizes nacheinander statt.If sorting is required, sorting occurs one new index at a time. 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.For example, when you rebuild a clustered index and associated nonclustered indexes within a single statement, the indexes are sorted one after the other. 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.Therefore, the additional temporary disk space that is required for sorting only has to be as large as the largest index in the operation. Dies ist fast immer der gruppierte Index.This is almost always the clustered index.

Wenn die Option SORT_IN_TEMPDB auf ON festgelegt wurde, muss der größte Index in tempdbpassen.If the SORT_IN_TEMPDB option is set to ON, the largest index must fit into tempdb. Obwohl durch diese Option die Menge des temporären Speicherplatzes erhöht wird, die zur Indexerstellung verwendet wird, kann sich die Zeitspanne verringern, die zum Erstellen eines Indexes erforderlich ist, wenn tempdb auf einem anderen Satz von Datenträgern gespeichert ist als die Benutzerdatenbank.Although this option increases the amount of temporary disk space that is used to create an index, it may reduce the time that is required to create an index when tempdb is on a set of disks different from the user database.

Wenn SORT_IN_TEMPDB auf OFF festgelegt wurde (die Standardeinstellung), wird jeder Index einschließlich partitionierter Indizes an seinem Zielspeicherplatz sortiert; in diesem Fall ist nur der Speicherplatz für die neuen Indexstrukturen erforderlich.If SORT_IN_TEMPDB is set to OFF (the default) each index, including partitioned indexes, is sorted in its destination disk space; and only the disk space for the new index structures is required.

Ein Beispiel zum Berechnen des Speicherplatzes finden Sie unter Index Disk Space Example.For an example of calculating disk space, see Index Disk Space Example.

Temporärer Speicherplatz für OnlineindexvorgängeTemporary Disk Space for Online Index Operations

Wenn Sie Indexvorgänge online ausführen, ist zusätzlicher temporärer Speicherplatz erforderlich.When you perform index operations online, additional temporary disk space is required.

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.If a clustered index is created, rebuilt, or dropped online, a temporary nonclustered index is created to map old bookmarks to new bookmarks. Wenn die Option SORT_IN_TEMPDB auf ON festgelegt wurde, wird dieser temporäre Index in tempdberstellt.If the SORT_IN_TEMPDB option is set to ON, this temporary index is created in tempdb. Wurde SORT_IN_TEMPDB auf OFF festgelegt, wird die gleiche Dateigruppe oder das gleiche Partitionsschema wie für den Zielindex verwendet.If SORT_IN_TEMPDB is set to OFF, the same filegroup or partition scheme as the target index is used. 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.The temporary mapping index contains one record for each row in the table, and its contents is the union of the old and new bookmark columns, including uniqueifiers and record identifiers and including only a single copy of any column used in both bookmarks. Weitere Informationen zu Onlineindexvorgängen finden Sie unter Ausführen von Onlineindexvorgängen.For more information about online index operations, see Perform Index Operations Online.

Hinweis

Die SORT_IN_TEMPDB-Option kann nicht für DROP INDEX-Anweisungen festgelegt werden.The SORT_IN_TEMPDB option cannot be set for DROP INDEX statements. Der temporäre Zuordnungsindex wird immer in der gleichen Dateigruppe oder dem gleichen Partitionsschema wie der Zielindex erstellt.The temporary mapping index is always created in the same filegroup or partition scheme as the target index.

Onlineindexvorgänge verwenden die Zeilenversionsverwaltung, um den Indexvorgang von den Auswirkungen der Änderungen zu isolieren, die von anderen Transaktionen vorgenommen wurden.Online index operations use row versioning to isolate the index operation from the effects of modifications made by other transactions. Auf diese Weise ist es nicht erforderlich, freigegebene Sperren für Zeilen anzufordern, die gelesen wurden.This avoids the need for requesting share locks on rows that have been read. Gleichzeitige Update- und Löschvorgänge durch Benutzer während Onlineindexvorgänge erfordern Speicherplatz für Versionsdatensätze in tempdb.Concurrent user update and delete operations during online index operations require space for version records in tempdb. Weitere Informationen finden Sie unter Ausführen von Onlineindexvorgängen .For more information, see Perform Index Operations Online .

Beispiel für den zum Speichern eines Indexes belegten SpeicherplatzIndex Disk Space Example

Transaktionsprotokollspeicherplatz für IndexvorgängeTransaction Log Disk Space for Index Operations

Schätzen der Größe einer TabelleEstimate the Size of a Table

Schätzen der Größe eines gruppierten IndexesEstimate the Size of a Clustered Index

Schätzen der Größe eines nicht gruppierten IndexEstimate the Size of a Nonclustered Index

Schätzen der Größe eines HeapsEstimate the Size of a Heap

CREATE INDEX (Transact-SQL)CREATE INDEX (Transact-SQL)

ALTER INDEX (Transact-SQL)ALTER INDEX (Transact-SQL)

DROP INDEX (Transact-SQL)DROP INDEX (Transact-SQL)

Angeben des Füllfaktors für einen IndexSpecify Fill Factor for an Index

Neuorganisieren und Neuerstellen von IndizesReorganize and Rebuild Indexes