Esempio di spazio su disco per gli indiciIndex Disk Space Example

Ogni volta che viene creato, ricompilato o eliminato un indice, nei file e nei filegroup appropriati è necessario spazio su disco per le strutture di origine (vecchie) e di destinazione (nuove).Whenever an index is created, rebuilt, or dropped, disk space for both the old (source) and new (target) structures is required in their appropriate files and filegroups. La struttura di origine non viene deallocata finché non viene eseguito il commit della transazione di creazione dell'indice.The old structure is not deallocated until the index creation transaction commits. Potrebbe essere necessario spazio su disco temporaneo aggiuntivo per le operazioni di ordinamento.Additional temporary disk space for sorting operations may also be needed. Per altre informazioni, vedere Disk Space Requirements for Index DDL Operations.For more information, see Disk Space Requirements for Index DDL Operations.

In questo esempio vengono determinati i requisiti di spazio su disco per la creazione di un indice cluster.In this example, disk space requirements to create a clustered index are determined.

Viene presupposto che le condizioni seguenti siano vere prima della creazione dell'indice cluster:Assume the following conditions are true before creating the clustered index:

  • La tabella esistente (heap) contiene 1 milione di righe.The existing table (heap) contains 1 million rows. Ogni riga è lunga 200 byte.Each row is 200 bytes long.

  • L'indice non cluster A contiene 1 milione di righe.Nonclustered index A contains 1 million rows. Ogni riga è lunga 50 byte.Each row is 50 bytes long.

  • L'indice non cluster B contiene 1 milione di righe.Nonclustered index B contains 1 million rows. Ogni riga è lunga 80 byte.Each row is 80 bytes long.

  • L'opzione "index create memory" è impostata su 2 MB.The index create memory option is set to 2 MB.

  • Per tutti gli indici, esistenti e nuovi, il valore del fattore di riempimento è 80.A fill factor value of 80 is used for all existing and new indexes. Questo significa che le pagine sono piene all'80 percento.This means the pages are 80 percent full.

    Nota

    Dopo aver creato un indice cluster, è necessario ricompilare i due indici non cluster per sostituire l'indicatore di riga con la nuova chiave dell'indice cluster.As a result of creating a clustered index, the two nonclustered indexes must be rebuilt to replace the row indicator with the new clustered index key.

Calcoli dello spazio su disco per un'operazione sull'indice offlineDisk Space Calculations for an Offline Index Operation

Nei passaggi seguenti vengono calcolati sia lo spazio su disco temporaneo da utilizzare durante l'operazione sull'indice, sia lo spazio su disco permanente necessario per l'archiviazione dei nuovi indici.In the following steps, both temporary disk space to be used during the index operation and permanent disk space to store the new indexes are calculated. I calcoli illustrati sono approssimativi, cioè i risultati vengono arrotondati per eccesso e vengono considerate solo le dimensioni del livello foglia dell'indice.The calculations shown are approximate; results are rounded up and consider only the size of index leaf level. Per indicare i calcoli approssimati viene utilizzata la tilde (~).The tilde (~) is used to indicate approximate calculations.

  1. Determinare le dimensioni delle strutture di origine.Determine the size of the source structures.

    Heap: 1 milione * 200 byte ~ 200 MBHeap: 1 million * 200 bytes ~ 200 MB

    Indice non cluster A: 1 milione * 50 byte / 80% ~ 63 MBNonclustered index A: 1 million * 50 bytes / 80% ~ 63 MB

    Indice non cluster B: 1 milione * 80 byte / 80% ~ 100 MBNonclustered index B: 1 million * 80 bytes / 80% ~ 100 MB

    Dimensioni totali delle strutture esistenti: 363 MBTotal size of existing structures: 363 MB

  2. Determinare le dimensioni delle strutture di destinazione.Determine the size of the target index structures. Si presuppone che la nuova chiave cluster sia lunga 24 byte incluso un uniqueifier.Assume that the new clustered key is 24 bytes long including a uniqueifier. L'indicatore di riga (lungo 8 byte) in entrambi gli indici non cluster verrà sostituito da questa chiave di clustering.The row indicator (8 bytes long) in both nonclustered indexes will be replaced by this clustered key.

    Indice cluster: 1 milione * 200 byte / 80% ~ 250 MBClustered index: 1 million * 200 bytes / 80% ~ 250 MB

    Indice non cluster A: 1 milione * (50 – 8 + 24) byte / 80% ~ 83 MBNonclustered index A: 1 million * (50 – 8 + 24) bytes / 80% ~ 83 MB

    Indice non cluster B: 1 milione * (80 – 8 + 24) byte / 80% ~ 120 MBNonclustered index B: 1 million * (80 – 8 + 24) bytes / 80% ~ 120 MB

    Dimensioni totali delle nuove strutture: 453 MBTotal size of new structures: 453 MB

    Lo spazio su disco totale necessario per supportare entrambe le strutture di origine e di destinazione per la durata dell'operazione sul'indice è di 816 MB (363 + 453).Total disk space required to support both the source and target structures for the duration of the index operation is 816 MB (363 + 453). Lo spazio attualmente allocato alle strutture di origine verrà deallocato dopo il commit dell'operazione sull'indice.The space currently allocated to the source structures will be deallocated after the index operation is committed.

  3. Determinare ulteriore spazio su disco temporaneo per l'ordinamento.Determine additional temporary disk space for sorting.

    Vengono illustrati i requisiti di spazio per l'ordinamento in tempdb (con SORT_IN_TEMPDB impostato su ON) e per l'ordinamento nella posizione di destinazione (con SORT_IN_TEMPDB impostato su OFF).Space requirements are shown for sorting in tempdb (with SORT_IN_TEMPDB set to ON) and sorting in the target location (with SORT_IN_TEMPDB set to OFF).

    1. Quando SORT_IN_TEMPDB è impostato su ON, in tempdb deve essere disponibile spazio su disco sufficiente per contenere l'indice di dimensioni maggiori (1 milione * 200 byte ~ 200 MB).When SORT_IN_TEMPDB is set to ON, tempdb must have sufficient disk space to hold the largest index (1 million * 200 bytes ~ 200 MB). Nell'operazione di ordinamento non è considerato il fattore di riempimento.Fill factor is not considered in the sorting operation.

      Spazio su disco aggiuntivo (nel percorso di tempdb ) uguale al valore dell' opzione di configurazione del server index create memory = 2 MB.Additional disk space (in the tempdb location) equal to the Configure the index create memory Server Configuration Option value = 2 MB.

      Dimensioni totali dello spazio su disco temporaneo con SORT_IN_TEMPDB impostata su ON ~ 202 MB.Total size of temporary disk space with SORT_IN_TEMPDB set to ON ~ 202 MB.

    2. Quando SORT_IN_TEMPDB è impostato su OFF (impostazione predefinita), per l'ordinamento vengono utilizzati i 250 MB di spazio su disco già considerati per il nuovo indice nel passaggio 2.When SORT_IN_TEMPDB is set to OFF (default), the 250 MB of disk space already considered for the new index in step 2 is used for sorting.

      Spazio su disco aggiuntivo (nel percorso di destinazione) uguale al valore dell' opzione di configurazione del server index create memory = 2 MB.Additional disk space (in the target location) equal to the Configure the index create memory Server Configuration Option value = 2 MB.

      Dimensioni totali dello spazio su disco temporaneo con SORT_IN_TEMPDB impostato su OFF = 2 MB.Total size of temporary disk space with SORT_IN_TEMPDB set to OFF = 2 MB.

    Se si usa tempdb, per creare gli indici cluster e non cluster sarebbero necessari in totale 1018 MB (816 + 202).Using tempdb, a total of 1018 MB (816 + 202) would be needed to create the clustered and nonclustered indexes. Con tempdb si aumenta la quantità di spazio su disco temporaneo usata per creare un indice, ma può ridursi il tempo necessario per creare un indice quando tempdb si trova in un set di dischi diversi da quello del database utente.Although using tempdb increases the amount of temporary disk space used to create an index, it may reduce the time that is required to create an index when tempdb is on a different set of disks than the user database. Per altre informazioni sull'uso di tempdb, vedere Opzione SORT_IN_TEMPDB per gli indici.For more information about using tempdb, see SORT_IN_TEMPDB Option For Indexes.

    Se non si usa tempdb, per creare gli indici cluster e non cluster sarebbero necessari in totale 818 MB (816+ 2).Without using tempdb, a total of 818 MB (816+ 2) would be needed to create the clustered and nonclustered indexes.

Calcoli dello spazio su disco per un'operazione sull'indice cluster onlineDisk Space Calculations for an Online Clustered Index Operation

Quando si crea, elimina o ricompila un indice cluster online, è necessario spazio su disco aggiuntivo per compilare e gestire un indice di mapping temporaneo.When you create, drop, or rebuild a clustered index online, additional disk space is required to build and maintain a temporary mapping index. L'indice di mapping temporaneo contiene un record per ogni riga della tabella e il suo contenuto è costituito dall'unione delle colonne di segnalibri vecchie e nuove.This temporary mapping index contains one record for each row in the table, and its contents are the union of the old and new bookmark columns.

Per calcolare lo spazio su disco necessario per un'operazione sull'indice cluster online, seguire la procedura illustrata per un'operazione su un indice offline e aggiungere i risultati a quelli ottenuti con il passaggio seguente.To calculate the disk space needed for an online clustered index operation, follow the steps shown for an offline index operation and add those results to the results of the following step.

  • Determinare lo spazio per l'indice di mapping temporaneo.Determine space for the temporary mapping index.

    In questo esempio il vecchio segnalibro è l'ID di riga (RID) dell'heap (8 byte) e il nuovo segnalibro è la chiave di clustering (24 byte incluso un uniqueifier).In this example, the old bookmark is the row ID (RID) of the heap (8 bytes) and the new bookmark is the clustering key (24 bytes including a uniqueifier). Tra i vecchi e i nuovi segnalibri non vi sono colonne sovrapposte.There are no overlapping columns between the old and new bookmarks.

    Dimensioni dell'indice di mapping temporaneo = 1 milione * (8 byte + 24 byte) / 80% ~ 40 MB.Temporary mapping index size = 1 million * (8 bytes + 24 bytes) / 80% ~ 40 MB.

    Lo spazio su disco deve essere aggiunto allo spazio su disco necessario nel percorso di destinazione se SORT_IN_TEMPDB è impostato su OFF o in tempdb se SORT_IN_TEMPDB è impostato su ON.This disk space must be added to the required disk space in the target location if SORT_IN_TEMPDB is set to OFF, or to tempdb if SORT_IN_TEMPDB is set to ON.

    Per altre informazioni sull'indice di mapping temporaneo, vedere Requisiti di spazio su disco per operazioni DLL sugli indici.For more information about the temporary mapping index, see Disk Space Requirements for Index DDL Operations.

Riepilogo dello spazio su discoDisk Space Summary

Nella tabella seguente sono riportati i risultati dei calcoli dello spazio su disco.The following table summarizes the results of the disk space calculations.

Operazione sull'indiceIndex operation Requisiti di spazio su disco per i percorsi delle strutture seguentiDisk space requirements for the locations of the following structures
Operazione sull'indice offline con SORT_IN_TEMPDB = ONOffline index operation with SORT_IN_TEMPDB = ON Spazio totale durante l'operazione: 1.018 MBTotal space during the operation: 1018 MB

- Tabella e indici esistenti: 363 MB*-Existing table and indexes: 363 MB*

-
tempdb: 202 MBtempdb: 202 MB

- Nuovi indici: 453 MB-New indexes: 453 MB

Spazio totale necessario dopo l'operazione: 453 MBTotal space required after the operation: 453 MB
Operazione sull'indice offline con SORT_IN_TEMPDB = OFFOffline index operation with SORT_IN_TEMPDB = OFF Spazio totale durante l'operazione: 816 MBTotal space during the operation: 816 MB

- Tabella e indici esistenti: 363 MB-Existing table and indexes: 363 MB

- Nuovi indici: 453 MB-New indexes: 453 MB

Spazio totale necessario dopo l'operazione: 453 MBTotal space required after the operation: 453 MB
Operazione sull'indice online con SORT_IN_TEMPDB = ONOnline index operation with SORT_IN_TEMPDB = ON Spazio totale durante l'operazione: 1.058 MBTotal space during the operation: 1058 MB

- Tabella e indici esistenti: 363 MB*-Existing table and indexes: 363 MB*

-
tempdb (include l'indice di mapping): 242 MBtempdb* (includes mapping index): 242 MB*

- Nuovi indici: 453 MB-New indexes: 453 MB

Spazio totale necessario dopo l'operazione: 453 MBTotal space required after the operation: 453 MB
Operazione sull'indice online con SORT_IN_TEMPDB = OFFOnline index operation with SORT_IN_TEMPDB = OFF Spazio totale durante l'operazione: 856 MBTotal space during the operation: 856 MB

- Tabella e indici esistenti: 363 MB-Existing table and indexes: 363 MB

- Indice di mapping temporaneo: 40 MB*-Temporary mapping index: 40 MB*

- Nuovi indici: 453 MB-New indexes: 453 MB

Spazio totale necessario dopo l'operazione: 453 MBTotal space required after the operation: 453 MB

Questo spazio viene deallocato dopo il commit dell'operazione sull'indice.This space is deallocated after the index operation is committed.

In questo esempio non viene considerato lo spazio su disco temporaneo aggiuntivo necessario in tempdb per i record delle versioni creati dalle operazioni simultanee di aggiornamento ed eliminazione.This example does not consider any additional temporary disk space required in tempdb for version records created by concurrent user update and delete operations.

Disk Space Requirements for Index DDL OperationsDisk Space Requirements for Index DDL Operations

Spazio su disco per il log delle transazioni per operazioni sugli indiciTransaction Log Disk Space for Index Operations