Dela via


Beräkna storleken på en heap

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Du kan använda följande steg för att uppskatta hur mycket utrymme som krävs för att lagra data i en heap:

  1. Ange antalet rader som ska finnas i tabellen:

    Num_Rows = antal rader i tabellen

  2. Ange antalet kolumner med fast längd och variabel längd och beräkna det utrymme som krävs för lagringen:

    Beräkna det utrymme som var och en av dessa grupper av kolumner upptar i dataraden. Storleken på en kolumn beror på datatypen och längdspecifikationen.

    Num_Cols = totalt antal kolumner (fast längd och variabel längd)

    Fixed_Data_Size = total bytestorlek för alla kolumner med fast längd

    Num_Variable_Cols = antal kolumner med variabel längd

    Max_Var_Size = maximal total bytestorlek för alla kolumner med variabel längd

  3. En del av raden, som kallas null-bitmappen, är reserverad för att hantera kolumnens nullabilitet. Beräkna dess storlek:

    Null_Bitmap = 2 + ((Num_Cols + 7) / 8)

    Endast heltalsdelen av det här uttrycket ska användas. Ta bort resten.

  4. Beräkna datastorleken för variabel längd:

    Om det finns kolumner med variabel längd i tabellen bestämmer du hur mycket utrymme som används för att lagra kolumnerna i raden:

    Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size

    Byte som läggs till i Max_Var_Size används för att spåra varje kolumn med variabel längd. Den här formeln förutsätter att alla kolumner med variabel längd är 100 procent fulla. Om du räknar med att en mindre procentandel av kolumnutrymmet med variabel längd kommer att användas kan du justera Max_Var_Size värdet med den procentandelen för att ge en mer exakt uppskattning av den totala tabellstorleken.

    Not

    Du kan kombinera varchar, nvarchar, varbinaryeller sql_variant kolumner som gör att den totala definierade tabellbredden överskrider 8 060 byte. Längden på var och en av dessa kolumner måste fortfarande ligga inom gränsen på 8 000 byte för en varchar, nvarchar, varbinaryeller sql_variant kolumn. Deras sammanlagda bredd kan dock överskrida gränsen på 8 060 byte i en tabell.

    Om det inte finns några kolumner med variabel längd anger du Variable_Data_Size till 0.

  5. Beräkna den totala radstorleken:

    Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4

    Värdet 4 i formeln representerar överkostnaden för radrubriken i dataraden.

  6. Beräkna antalet rader per sida (8 096 kostnadsfria byte per sida):

    Rows_Per_Page = 8096 / (Row_Size + 2)

    Eftersom rader inte sträcker sig över sidor bör antalet rader per sida avrundas nedåt till närmaste hela rad. Värdet 2 i formeln är för radens post i sidans fackmatris.

  7. Beräkna antalet sidor som krävs för att lagra alla rader:

    Antal_Sidor = Antal_Rader / Rader_Per_Sida

    Antalet beräknade sidor bör avrundas upp till närmaste hela sida.

  8. Beräkna mängden utrymme som krävs för att lagra data i heapen (totalt 8 192 byte per sida):

    Heapstorlek (byte) = 8192 x antal_sidor

Den här beräkningen tar inte hänsyn till följande:

  • Partitionering

    Utrymmeskostnaderna från partitionering är minimala, men komplexa att beräkna. Det är inte viktigt att ta med.

  • Allokeringssidor

    Det finns minst en IAM-sida som används för att spåra de sidor som allokerats till en heap, men utrymmeskostnaderna är minimala och det finns ingen algoritm för att deterministiskt beräkna exakt hur många IAM-sidor som ska användas.

  • Värden för stora objekt (LOB)

    Algoritmen för att fastställa exakt hur mycket utrymme som ska användas för att lagra LOB-datatyperna varchar(max), varbinary(max), nvarchar(max), text, ntextxmloch bild värden är komplexa. Det räcker att bara lägga till den genomsnittliga storleken på de LOB-värden som förväntas och sedan lägga till den i den totala heapstorleken.

  • Komprimering

    Du kan inte beräkna storleken på en komprimerad heap i förväg.

  • Glesa kolumner

    Information om utrymmeskraven för glesa kolumner finns i Använda glesa kolumner.

Se även

Heaps (tabeller utan grupperade index)
Grupp- och Icke-grupperade Index Beskrivna
Skapa klustrade index
Skapa icke-grupperade index
Beräkna storleken på en tabell
Beräkna storleken på ett grupperat index
Beräkna storleken på ett icke-grupperat index
Beräkna storleken på en databas