Dela via


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

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

Diskutrymme är viktigt när du skapar, återskapar eller släpper index. Otillräckligt diskutrymme kan försämra prestanda eller till och med orsaka att indexåtgärden misslyckas. Den här artikeln innehåller allmän information som kan hjälpa dig att fastställa hur mycket diskutrymme som krävs för DDL-åtgärder (Index Data Definition Language).

Indexåtgärder som inte kräver något ytterligare diskutrymme

Följande indexåtgärder kräver inget ytterligare diskutrymme:

  • ALTER INDEX REORGANIZE; Loggutrymme krävs dock.

  • DROP INDEX när du släpper ett icke-grupperat index.

  • DROP INDEX när du tar bort ett klustrat index offline utan att ange MOVE TO klausulen och icke-klustrade index inte finns.

  • CREATE TABLE (PRIMARY KEY eller UNIQUE begränsningar)

Indexåtgärder som kräver ytterligare diskutrymme

Alla andra index-DDL-åtgärder kräver ytterligare tillfälligt diskutrymme som ska användas under åtgärden och permanent diskutrymme för att lagra den nya indexstrukturen eller strukturerna.

När en ny indexstruktur skapas krävs diskutrymme för både de gamla (källa) och nya (målstrukturerna) i lämpliga filer och filgrupper. Den gamla strukturen frisläpps inte förrän transaktionen för att skapa indexet bekräftas.

Följande index-DDL-åtgärder skapar nya indexstrukturer och kräver ytterligare diskutrymme:

  • CREATE INDEX
  • CREATE INDEX WITH DROP_EXISTING
  • ALTER INDEX REBUILD
  • ALTER TABLE ADD CONSTRAINT (PRIMARY KEY eller UNIQUE)
  • ALTER TABLE DROP CONSTRAINT (PRIMARY KEY eller UNIQUE) när villkoret baseras på ett grupperat index
  • DROP INDEX MOVE TO (Gäller endast för klustrade index.)

Tillfälligt diskutrymme för sortering

Förutom det diskutrymme som krävs för käll- och målstrukturerna krävs tillfälligt diskutrymme för sortering, såvida inte frågeoptimeraren hittar en körningsplan som inte kräver sortering.

Om sortering krävs sker sortering ett nytt index i taget. När du till exempel återskapar ett klustrat index och associerade icke-grupperade index i en enda instruktion sorteras indexen en efter en. Därför behöver det extra temporära diskutrymme som krävs för sortering bara vara lika stort som det största indexet i åtgärden. Det här är nästan alltid det klustrade indexet.

Om alternativet SORT_IN_TEMPDB är inställt på ONmåste det största indexet passa in i tempdb. Även om det här alternativet ö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 det finns på en uppsättning diskar som skiljer sig från användardatabasen.

Om SORT_IN_TEMPDB är inställt på OFF (standard) sorteras varje index, inklusive partitionerade index, i måldiskutrymmet, och endast diskutrymmet för de nya indexstrukturerna krävs.

Ett exempel på hur du beräknar diskutrymme finns i Exempel på indexering av diskutrymme.

Tillfälligt diskutrymme för onlineindexåtgärder

När du utför indexåtgärder online krävs ytterligare tillfälligt diskutrymme.

Om ett grupperat index skapas, återskapas eller tas bort online skapas ett tillfälligt icke-grupperat index för att mappa gamla bokmärken till nya bokmärken. Om alternativet SORT_IN_TEMPDB är inställt på ONskapas det här tillfälliga indexet i tempdb. Om SORT_IN_TEMPDB är inställt på OFFanvänds samma filgrupps- eller partitionsschema som målindexet. Det tillfälliga 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, inklusive unika identifierare och postidentifierare och en enda kopia av varje kolumn som används i båda bokmärkena. Mer information om onlineindexåtgärder finns i Utföra indexåtgärder online.

Anmärkning

Alternativet SORT_IN_TEMPDB kan inte anges för DROP INDEX instruktioner. Det tillfälliga mappningsindexet skapas alltid i samma filgrupps- eller partitionsschema som målindexet.

Onlineindexåtgärder använder radversionshantering för att isolera indexåtgärden från effekterna av ändringar som gjorts av andra transaktioner. Detta förhindrar behovet av att begära delningslås på rader som har lästs. Samtidiga åtgärder för uppdatering och borttagning av användare under onlineindexåtgärder kräver utrymme för versionsposter i tempdb. Mer information finns i Utföra indexåtgärder online .