Delen via


Schijfruimtevereisten voor index-DDL-bewerkingen

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Schijfruimte is een belangrijke overweging bij het maken, herbouwen of verwijderen van indexen. Onvoldoende schijfruimte kan de prestaties verminderen of zelfs leiden tot een storing in de indexbewerking. Dit artikel bevat algemene informatie die u kan helpen bij het bepalen van de hoeveelheid schijfruimte die nodig is voor DDL-bewerkingen (Index Data Definition Language).

Indexbewerkingen waarvoor geen extra schijfruimte nodig is

Voor de volgende indexbewerkingen is geen extra schijfruimte vereist:

  • ALTER INDEX REORGANIZE; er is echter logboekruimte vereist.

  • DROP INDEX wanneer u een niet-geclusterde index verwijdert.

  • DROP INDEX wanneer u een geclusterde index offline haalt zonder de MOVE TO component en er geen niet-geclusterde indexen bestaan.

  • CREATE TABLE (PRIMARY KEY ofwel UNIQUE beperkingen)

Indexbewerkingen waarvoor extra schijfruimte is vereist

Alle andere DDL-indexbewerkingen vereisen extra tijdelijke schijfruimte die tijdens de bewerking moet worden gebruikt en permanente schijfruimte om de nieuwe indexstructuur of -structuren op te slaan.

Wanneer er een nieuwe indexstructuur wordt gemaakt, is schijfruimte voor zowel de oude (bron) als de nieuwe (doel) structuren vereist in de juiste bestanden en bestandsgroepen. De oude structuur wordt pas vrijgegeven nadat de transactie voor het aanmaken van de index is voltooid.

De volgende DDL-indexbewerkingen maken nieuwe indexstructuren en vereisen extra schijfruimte:

  • CREATE INDEX
  • CREATE INDEX WITH DROP_EXISTING
  • ALTER INDEX REBUILD
  • ALTER TABLE ADD CONSTRAINT (PRIMARY KEY of UNIQUE)
  • ALTER TABLE DROP CONSTRAINT (PRIMARY KEY of UNIQUE) wanneer de beperking is gebaseerd op een geclusterde index
  • DROP INDEX MOVE TO (Alleen van toepassing op geclusterde indexen.)

Tijdelijke schijfruimte voor sorteren

Naast de benodigde schijfruimte voor de bron- en doelstructuren is tijdelijke schijfruimte vereist voor het sorteren, tenzij de queryoptimalisatie een uitvoeringsplan vindt waarvoor geen sortering is vereist.

Als er sortering nodig is, vindt de sortering één voor één per nieuwe index plaats. Wanneer u bijvoorbeeld een geclusterde index en gekoppelde niet-geclusterde indexen samenbouwt binnen één instructie, worden de indexen één na de andere gesorteerd. Daarom hoeft de extra tijdelijke schijfruimte die nodig is voor sorteren, alleen zo groot te zijn als de grootste index in de bewerking. Dit is bijna altijd de geclusterde index.

Als de SORT_IN_TEMPDB optie is ingesteld op ON, moet de grootste index in tempdbpassen. Hoewel deze optie de hoeveelheid tijdelijke schijfruimte verhoogt die wordt gebruikt om een index te maken, kan dit de tijd verkorten die nodig is om een index te maken wanneer tempdb zich op een set schijven bevindt die afwijken van de gebruikersdatabase.

Als SORT_IN_TEMPDB is ingesteld op OFF (de standaardinstelling), worden elke index, inclusief gepartitioneerde indexen, gesorteerd in de doelschijfruimte; en alleen de schijfruimte voor de nieuwe indexstructuren is vereist.

Zie het voorbeeld van de indexschijfruimte voor een voorbeeld van het berekenen van schijfruimte.

Tijdelijke schijfruimte voor online indexbewerkingen

Wanneer u indexbewerkingen online uitvoert, is extra tijdelijke schijfruimte vereist.

Als een geclusterde index wordt gemaakt, opnieuw wordt opgebouwd of online wordt verwijderd, wordt er een tijdelijke niet-geclusterde index gemaakt om oude bladwijzers toe te wijzen aan nieuwe bladwijzers. Als de SORT_IN_TEMPDB optie is ingesteld op ON, wordt deze tijdelijke index gemaakt in tempdb. Als SORT_IN_TEMPDB is ingesteld op OFF, wordt hetzelfde bestandsgroep- of partitieschema gebruikt als de doelindex. De tijdelijke toewijzingsindex bevat één record voor elke rij in de tabel en de inhoud ervan is de samenvoeging van de oude en nieuwe bladwijzerkolommen, waaronder unieke classificaties en record-id's en slechts één kopie van een kolom die in beide bladwijzers wordt gebruikt. Zie Indexbewerkingen online uitvoeren voor meer informatie over online indexbewerkingen.

Opmerking

De SORT_IN_TEMPDB optie kan niet worden ingesteld voor de DROP INDEX instructies. De tijdelijke toewijzingsindex wordt altijd gemaakt in dezelfde bestandsgroep of hetzelfde partitieschema als de doelindex.

Online indexbewerkingen maken gebruik van rijversiebeheer om de indexbewerking te isoleren van de effecten van wijzigingen die door andere transacties zijn aangebracht. Hierdoor hoeft u geen gedeelde vergrendelingen aan te vragen voor rijen die zijn gelezen. Gelijktijdige bewerkingen voor het bijwerken en verwijderen van gebruikers tijdens online indexbewerkingen vereisen ruimte voor versierecords in tempdb. Zie Indexbewerkingen online uitvoeren voor meer informatie.