Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Wanneer een index wordt gemaakt, opnieuw opgebouwd of verwijderd, 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. Er is mogelijk ook extra tijdelijke schijfruimte nodig voor sorteerbewerkingen. Zie Vereisten voor schijfruimte voor index-DDL-bewerkingen voor meer informatie.
In dit voorbeeld worden de vereisten voor schijfruimte voor het maken van een geclusterde index bepaald.
Stel dat aan de volgende voorwaarden wordt voldaan voordat u de geclusterde index maakt:
- De bestaande tabel (heap) bevat 1 miljoen rijen. Elke rij is 200 bytes lang.
- Niet-geclusterde index A bevat 1 miljoen rijen. Elke rij is 50 bytes lang.
- Niet-geclusterde index B bevat 1 miljoen rijen. Elke rij is 80 bytes lang.
- De geheugenoptie voor het maken van de index is ingesteld op 2 MB.
- Een opvulfactorwaarde van 80 wordt gebruikt voor alle bestaande en nieuwe indexen. Dit betekent dat de pagina's 80 procent vol zijn.
Notitie
Als gevolg van het maken van een geclusterde index moeten de twee niet-geclusterde indices opnieuw worden opgebouwd om de rij-indicator te vervangen door de nieuwe geclusterde indexsleutel.
Berekeningen van schijfruimte voor een offlineindexbewerking
In de volgende stappen worden zowel tijdelijke schijfruimte die moet worden gebruikt tijdens de indexbewerking als permanente schijfruimte voor het opslaan van de nieuwe indexen berekend. De weergegeven berekeningen zijn bij benadering; resultaten worden naar boven afgerond en houden alleen rekening met de grootte van het indexbladniveau. De tilde (~) wordt gebruikt om geschatte berekeningen aan te geven.
Bepaal de grootte van de bronstructuren.
- Heap: 1 miljoen * 200 bytes ~ 200 MB
- Niet-geclusterde index A: 1 miljoen * 50 bytes / 80% ~ 63 MB
- Niet-geclusterde index B: 1 miljoen * 80 bytes / 80% ~ 100 MB
Totale grootte van bestaande structuren: 363 MB
Bepaal de grootte van de doelindexstructuren. Stel dat de nieuwe geclusterde sleutel 24 bytes lang is, inclusief een uniekmaker. De rijindicator (8 bytes lang) in beide niet-geclusterde indices zal worden vervangen door deze geclusterde sleutel.
Geclusterde index: 1 miljoen * 200 bytes / 80% ~ 250 MB
Niet-geclusterde index A: 1 miljoen * (50 - 8 + 24) bytes / 80% ~ 83 MB
Niet-geclusterde index B: 1 miljoen * (80 - 8 + 24) bytes / 80% ~ 120 MB
Totale grootte van nieuwe structuren: 453 MB
De totale schijfruimte die nodig is om zowel de bron- als doelstructuren tijdens de indexbewerking te ondersteunen, is 816 MB (363 + 453). De ruimte die momenteel aan de bronstructuren is toegewezen, zal worden vrijgegeven nadat de indexbewerking is doorgevoerd.
Bepaal extra tijdelijke schijfruimte voor sorteren.
Ruimtevereisten worden weergegeven voor sorteren in
tempdb(metSORT_IN_TEMPDBingesteld opON) en sorteren op de doellocatie (metSORT_IN_TEMPDBingesteld opOFF).Wanneer
SORT_IN_TEMPDBis ingesteld opON, moettempdbvoldoende schijfruimte hebben om een index van maximaal 1 miljoen * 200 bytes te bevatten (circa 200 MB). Vulfactor wordt niet meegenomen in de sorteerbewerking.Extra schijfruimte (op de
tempdblocatie) die gelijk is aan de index, maakt geheugenwaarde = 2 MB.Totale grootte van tijdelijke schijfruimte met
SORT_IN_TEMPDBingesteld opON~ 202 MB.Wanneer
SORT_IN_TEMPDBis ingesteld opOFF(standaard), wordt de 250 MB schijfruimte die al voor de nieuwe index in stap 2 in aanmerking is genomen, gebruikt voor het sorteren.Extra schijfruimte (op de doellocatie) gelijk aan de index maakt geheugenwaarde = 2 MB.
Totale grootte van tijdelijke schijfruimte met
SORT_IN_TEMPDBingesteld opOFF= 2 MB.
Met behulp tempdbvan zou in totaal 1018 MB (816 + 202) nodig zijn om de geclusterde en niet-geclusterde indexen te maken. Hoewel het gebruik tempdb de hoeveelheid tijdelijke schijfruimte verhoogt die wordt gebruikt voor het maken van een index, kan dit de tijd verkorten die nodig is om een index te maken wanneer tempdb zich op een andere set schijven bevindt dan de gebruikersdatabase. Zie voor meer informatie over het gebruik van tempdb, SORT_IN_TEMPDB Optie voor indexen.
Zonder gebruik tempdbzou in totaal 818 MB (816 + 2) nodig zijn om de geclusterde en niet-geclusterde indexen te maken.
Berekeningen van schijfruimte voor een online geclusterde indexbewerking
Wanneer u online een geclusterde index maakt, neer zet of herbouwt, is extra schijfruimte vereist om een tijdelijke toewijzingsindex te bouwen en te onderhouden. Deze tijdelijke toewijzingsindex bevat één record voor elke rij in de tabel en de inhoud is de samenvoeging van de oude en nieuwe bladwijzerkolommen.
Als u de schijfruimte wilt berekenen die nodig is voor een online geclusterde indexbewerking, volgt u de stappen die worden weergegeven voor een offlineindexbewerking en voegt u deze resultaten toe aan de resultaten van de volgende stap.
Bepaal de ruimte voor de tijdelijke koppelingsindex.
In dit voorbeeld is de oude bladwijzer de rij-id (RID) van de heap (8 bytes) en de nieuwe bladwijzer is de clustering-sleutel (24 bytes inclusief een uniekmakende ). Er zijn geen overlappende kolommen tussen de oude en nieuwe bladwijzers.
Tijdelijke toewijzingsindexgrootte = 1 miljoen * (8 bytes + 24 bytes) / 80% ~ 40 MB.
Deze schijfruimte moet worden toegevoegd aan de vereiste schijfruimte op de doellocatie als
SORT_IN_TEMPDBis ingesteld opOFF, of aantempdbalsSORT_IN_TEMPDBis ingesteld opON.
Zie Vereisten voor schijfruimte voor index DDL-bewerkingen voor meer informatie over de tijdelijke mapping index.
Samenvatting van schijfruimte
De volgende tabel bevat een overzicht van de resultaten van de berekeningen van de schijfruimte.
| Indexbewerking | Vereisten voor schijfruimte voor de locaties van de volgende structuren |
|---|---|
Offline indexbewerking met SORT_IN_TEMPDB = ON |
Totale ruimte tijdens de bewerking: 1018 MB - Bestaande tabel en indexen: 363 MB 1 - tempdb: 202 MB 1- Nieuwe indexen: 453 MB Totale ruimte vereist na de bewerking: 453 MB |
Offline indexbewerking met SORT_IN_TEMPDB = OFF |
Totale ruimte tijdens de bewerking: 816 MB - Bestaande tabel en indexen: 363 MB 1 - Nieuwe indexen: 453 MB Totale ruimte vereist na de bewerking: 453 MB |
Online indexbewerking met SORT_IN_TEMPDB = ON |
Totale ruimte tijdens de bewerking: 1058 MB - Bestaande tabel en indexen: 363 MB 1 - tempdb (inclusief toewijzingsindex): 242 MB*- Nieuwe indexen: 453 MB Totale ruimte vereist na de bewerking: 453 MB |
Online indexbewerking met SORT_IN_TEMPDB = OFF |
Totale ruimte tijdens de bewerking: 856 MB - Bestaande tabel en indexen: 363 MB 1 - Tijdelijke mappingindex: 40 MB 1 - Nieuwe indexen: 453 MB Totale ruimte vereist na de bewerking: 453 MB |
1 De ruimte wordt vrijgegeven nadat de indexbewerking is bevestigd.
In dit voorbeeld wordt geen rekening gehouden met extra tijdelijke schijfruimte die vereist is tempdb voor versierecords die zijn gemaakt door gelijktijdige gebruikersbewerkingen voor het bijwerken en verwijderen.