Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-databas i Förhandsversion av 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:
Ange antalet rader som ska finnas i tabellen:
- Num_Rows = antal rader i tabellen
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
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.
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:
- Variabel_Data_Storlek = 2 + (Antal_Variabla_Kolumner x 2) + Max_Var_Storlek
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.
Note
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 kombinerade 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.
Beräkna den totala radstorleken:
- = Row_Size + Fixed_Data_Size + Variable_Data_SizeNull_Bitmap + 4
Värdet 4 i formeln representerar överkostnaden för radrubriken i dataraden.
Beräkna antalet rader per sida (8 096 kostnadsfria byte per sida):
- Rader_per_sida = 8096 / (Rad_storlek + 2)
Eftersom rader inte sträcker sig över sidor bör antalet rader per sida avrundas ned till närmaste hela rad. Värdet 2 i formeln är för radens post i sidans fackmatris.
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.
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 villkor:
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 avgöra exakt hur mycket utrymme som ska användas för att lagra LOB-datatyperna varchar(max), varbinary(max), nvarchar(max), text, ntextxml och bildvärden är komplexa. Det räcker med att bara lägga till den genomsnittliga storleken på LOB-värdena som förväntas och lägga till det till den totala storleken på heapen.
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.