Voorbeeld van indexschijfruimte
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 ongedaan gemaakt nadat de transactiedoorvoeringen voor het maken van de index zijn doorgevoerd. Er is mogelijk ook extra tijdelijke schijfruimte nodig voor sorteerbewerkingen. Zie Schijfruimtevereisten voor DDL-indexbewerkingenvoor 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 te ondersteunen voor de duur van de indexbewerking 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- (met SORT_IN_TEMPDB ingesteld op AAN) en sorteren op de doellocatie (waarbij SORT_IN_TEMPDB is ingesteld op UIT).
Wanneer SORT_IN_TEMPDB is ingesteld op AAN, moet tempdb- voldoende schijfruimte hebben om de grootste index te kunnen bevatten (1 miljoen * 200 bytes ~ 200 MB). Vulfactor wordt niet meegenomen in de sorteerbewerking.
Extra schijfruimte (in de tempdb-locatie) gelijk aan de waarde van de Optie voor serverconfiguratie geheugenindex maken = 2 MB.
Totale grootte van tijdelijke schijfruimte met SORT_IN_TEMPDB ingesteld op ON ~ 202 MB.
Wanneer SORT_IN_TEMPDB is ingesteld op UIT (standaard), wordt de 250 MB schijfruimte die al in aanmerking komt voor de nieuwe index in stap 2 gebruikt voor sorteren.
Extra schijfruimte (op de doellocatie) gelijk aan de waarde van de configuratieoptie "index-creatiememory server" = 2 MB.
Totale grootte van tijdelijke schijfruimte met SORT_IN_TEMPDB ingesteld op OFF = 2 MB.
Met tempdb-zou in totaal 1018 MB (816 + 202) nodig zijn om de geclusterde en niet-geclusterde indexen te maken. Hoewel het gebruik van tempdb- de hoeveelheid tijdelijke schijfruimte verhoogt die wordt gebruikt om een index te maken, kan dit de tijd verminderen die nodig is om een index te maken wanneer tempdb- zich op een andere set schijven bevindt dan de gebruikersdatabase. Voor meer informatie over het gebruik van tempdb-, zie SORT_IN_TEMPDB Option For Indexes.
Zonder tempdb-te gebruiken, zou 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_TEMPDB is ingesteld op UIT of op tempdb- als SORT_IN_TEMPDB is ingesteld op AAN.
Zie voor meer informatie over de tijdelijke toewijzingsindex Schijfruimtevereisten voor DDL-indexbewerkingen.
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 waarbij SORT_IN_TEMPDB is geactiveerd | Totale ruimte tijdens de bewerking: 1018 MB -Bestaande tabel en indexen: 363 MB* - tempdb: 202 MB* -Nieuwe indexen: 453 MB Totale ruimte vereist na de bewerking: 453 MB |
Offline indexbewerking met SORT_IN_TEMPDB = UIT | Totale ruimte tijdens de bewerking: 816 MB -Bestaande tabel en indexen: 363 MB* -Nieuwe indexen: 453 MB Totale ruimte vereist na de bewerking: 453 MB |
Online indexbewerking met SORT_IN_TEMPDB = AAN | Totale ruimte tijdens de bewerking: 1058 MB -Bestaande tabel en indexen: 363 MB* - tempdb- (inclusief toewijzingsindex): 242 MB* -Nieuwe indexen: 453 MB Totale ruimte vereist na de bewerking: 453 MB |
Online indexbewerking met SORT_IN_TEMPDB = UIT | Totale ruimte tijdens de bewerking: 856 MB -Bestaande tabel en indexen: 363 MB* -Tijdelijke koppelingsindex: 40 MB* -Nieuwe indexen: 453 MB Totale ruimte vereist na de bewerking: 453 MB |
Deze ruimte wordt vrijgegeven nadat de indexoperatie is bevestigd.
In dit voorbeeld wordt geen rekening gehouden met extra tijdelijke schijfruimte die is vereist in tempdb- voor versierecords die zijn gemaakt door gelijktijdige bewerkingen voor het bijwerken en verwijderen van gebruikers.