Dela via


Exempel på indexdiskutrymme

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

När ett index skapas, återskapas eller tas bort krävs diskutrymme för både de gamla strukturerna (källa) och nya (mål) i lämpliga filer och filgrupper. Den gamla strukturen frigörs inte förrän transaktionen för indexskapande slutförs. Ytterligare tillfälligt diskutrymme för sorteringsåtgärder kan också behövas. Mer information finns i diskutrymmeskrav för index-DDL-åtgärder.

I det här exemplet fastställs kraven på diskutrymme för att skapa ett klustrat index.

Anta att följande villkor gäller innan du skapar det klustrade indexet.

  • Den befintliga tabellen (heap) innehåller 1 miljon rader. Varje rad är 200 byte lång.

  • Icke-grupperat index A innehåller 1 miljon rader. Varje rad är 50 byte lång.

  • Icke-grupperat index B innehåller 1 miljon rader. Varje rad är 80 byte lång.

  • Alternativet för att skapa minne för index är inställt på 2 MB.

  • Ett fyllningsfaktorvärde på 80 används för alla befintliga och nya index. Det innebär att sidorna är 80 procent fulla.

    Not

    När du skapar ett grupperat index måste de två icke-grupperade indexen återskapas för att ersätta radindikatorn med den nya klustrade indexnyckeln.

Diskutrymmesberäkningar för en offlineindexåtgärd

I följande steg beräknas både tillfälligt diskutrymme som ska användas under indexåtgärden och permanent diskutrymme för att lagra de nya indexen. De beräkningar som visas är ungefärliga. resultaten avrundas uppåt och tar endast hänsyn till storleken på indexbladets nivå. Tilde (~) används för att ange ungefärliga beräkningar.

  1. Fastställa storleken på källstrukturerna.

    Heap: 1 miljon * 200 byte ~ 200 MB

    Icke-grupperat index A: 1 miljon * 50 byte/80% ~ 63 MB

    Icke-grupperat index B: 1 miljon * 80 byte/80% ~ 100 MB

    Total storlek på befintliga strukturer: 363 MB

  2. Fastställa storleken på målindexstrukturerna. Anta att den nya klustrade nyckeln är 24 byte lång, inklusive en unikifierare. Radindikatorn (8 byte lång) i båda icke-grupperade index ersätts av den här klustrade nyckeln.

    Grupperat index: 1 miljon * 200 byte/80% ~ 250 MB

    Icke-grupperat index A: 1 miljon * (50– 8 + 24) byte/80% ~ 83 MB

    Icke-grupperat index B: 1 miljon * (80–8 + 24) byte/80% ~ 120 MB

    Total storlek på nya strukturer: 453 MB

    Det totala diskutrymme som krävs för att stödja både käll- och målstrukturerna under indexåtgärdens varaktighet är 816 MB (363 + 453). Det utrymme som för närvarande allokeras till källstrukturerna kommer att frigöras när indexåtgärden har slutförts.

  3. Fastställ ytterligare tillfälligt diskutrymme för sortering.

    Utrymmeskrav visas för sortering i tempdb- (med SORT_IN_TEMPDB inställt på PÅ) och sortering på målplatsen (med SORT_IN_TEMPDB inställt på OFF).

    1. När SORT_IN_TEMPDB är inställt på PÅ måste tempdb ha tillräckligt med diskutrymme för att lagra det största indexet (1 miljon * 200 byte ~ 200 MB). Fyllningsfaktorn beaktas inte i sorteringsåtgärden.

      Ytterligare diskutrymme (på tempdb plats) som är lika med Konfigurera konfigurationsalternativet för indexet skapa minne server värde = 2 MB.

      Total storlek på tillfälligt diskutrymme med SORT_IN_TEMPDB inställt på PÅ ~ 202 MB.

    2. När SORT_IN_TEMPDB är inställt på OFF (standard) används 250 MB diskutrymme som redan övervägts för det nya indexet i steg 2 för sortering.

      Ytterligare diskutrymme (på målplatsen) som är lika med Konfigurera konfigurationsalternativet för indexet skapa minne server värde = 2 MB.

      Total storlek på tillfälligt diskutrymme med SORT_IN_TEMPDB inställt på OFF = 2 MB.

Om du använder tempdbkrävs totalt 1 018 MB (816 + 202) för att skapa klustrade och icke-grupperade index. Även om användningen av tempdb ökar mängden tillfälligt diskutrymme som används för att skapa ett index, kan det minska den tid som krävs för att skapa ett index när tempdb finns på en annan uppsättning diskar än användardatabasen. Mer information om hur du använder tempdbfinns i SORT_IN_TEMPDB alternativ för index.

Utan att använda tempdbskulle totalt 818 MB (816+ 2) behövas för att skapa klustrade och icke-grupperade index.

Diskutrymmesberäkningar för en onlineklusterbaserad indexåtgärd

När du skapar, släpper eller återskapar ett klustrat index online krävs ytterligare diskutrymme för att skapa och underhålla ett tillfälligt mappningsindex. Det här temporära mappningsindexet innehåller en post för varje rad i tabellen, och dess innehåll är en union av de gamla och nya bokmärkeskolumnerna.

Om du vill beräkna diskutrymmet som behövs för en onlineklusteråtgärd följer du stegen som visas för en offlineindexåtgärd och lägger till dessa resultat i resultatet av följande steg.

  • Fastställ utrymme för det tillfälliga mappningsindexet.

    I det här exemplet är det gamla bokmärket rad-ID (RID) för heapen (8 byte) och det nya bokmärket är klustringsnyckeln (24 byte inklusive en uniqueifier). Det finns inga överlappande kolumner mellan de gamla och nya bokmärkena.

    Indexstorlek för tillfällig mappning = 1 miljon * (8 byte + 24 byte) /80% ~ 40 MB.

    Detta diskutrymme måste läggas till det diskutrymme som krävs på målplatsen om SORT_IN_TEMPDB är inställt på AV, eller till tempdb om SORT_IN_TEMPDB är inställt på PÅ.

Mer information om det tillfälliga mappningsindexet finns i Diskutrymmeskrav för Index DDL-åtgärder.

Sammanfattning av diskutrymme

I följande tabell sammanfattas resultatet av diskutrymmesberäkningarna.

Indexåtgärd Diskutrymmeskrav för platserna i följande strukturer
Offlineindexåtgärd med SORT_IN_TEMPDB = ON Totalt utrymme under åtgärden: 1 018 MB

-Befintliga tabeller och index: 363 MB*

-
tempdb: 202 MB*

-Nya indexen: 453 MB

Totalt utrymme som krävs efter åtgärden: 453 MB
Offlineindexåtgärd med SORT_IN_TEMPDB = OFF Totalt utrymme under åtgärden: 816 MB

-Befintliga tabeller och index: 363 MB*

-Nya indexar: 453 MB

Totalt utrymme som krävs efter åtgärden: 453 MB
Onlineindexåtgärd med SORT_IN_TEMPDB = ON Totalt utrymme under åtgärden: 1 058 MB

-Befintliga tabeller och index: 363 MB*

-
tempdb (inklusive mappningsindex): 242 MB*

-Nya index: 453 MB

Totalt utrymme som krävs efter åtgärden: 453 MB
Online indexoperation med SORT_IN_TEMPDB = OFF Totalt utrymme under åtgärden: 856 MB

-Befintliga tabeller och index: 363 MB*

-Tillfälligt mappningsindex: 40 MB*

-Nya indexer: 453 MB

Totalt utrymme som krävs efter åtgärden: 453 MB

Det här utrymmet frigörs efter att indexåtgärden har genomförts.

I det här exemplet beaktas inte något ytterligare tillfälligt diskutrymme som krävs i tempdb- för versionsposter som skapats av samtidiga användaruppdaterings- och borttagningsåtgärder.

diskutrymmeskrav för index-DDL-åtgärder

diskutrymme för transaktionsloggar för indexåtgärder