Stima delle dimensioni di un heapEstimate the Size of a Heap

I seguenti passaggi sono utilizzabili per valutare la quantità di spazio necessaria per l'archiviazione dei dati in un heap:You can use the following steps to estimate the amount of space that is required to store data in a heap:

  1. Specificare il numero di righe che verranno incluse nella tabella:Specify the number of rows that will be present in the table:

    Num_Rows = numero di righe della tabellaNum_Rows = number of rows in the table

  2. Specificare il numero di colonne di lunghezza fissa e e variabile e calcolare lo spazio necessario per la loro archiviazione:Specify the number of fixed-length and variable-length columns and calculate the space that is required for their storage:

    Calcolare lo spazio occupato da ognuno di questi gruppi di colonne all'interno della riga di dati.Calculate the space that each of these groups of columns occupies within the data row. Le dimensioni di una colonna dipendono dal tipo di dati e dalla lunghezza specificata.The size of a column depends on the data type and length specification.

    Num_Cols = numero totale di colonne (a lunghezza fissa e a lunghezza variabile)Num_Cols = total number of columns (fixed-length and variable-length)

    Fixed_Data_Size = dimensioni totali in byte di tutte le colonne a lunghezza fissaFixed_Data_Size = total byte size of all fixed-length columns

    Num_Variable_Cols = numero di colonne a lunghezza variabileNum_Variable_Cols = number of variable-length columns

    Max_Var_Size = dimensioni massime totali in byte di tutte le colonne a lunghezza variabileMax_Var_Size = maximum total byte size of all variable-length columns

  3. Parte della riga, nota come mappa di bit null, è riservata alla gestione del supporto dei valori Null in una colonna.Part of the row, known as the null bitmap, is reserved to manage column nullability. Calcolarne le dimensioni:Calculate its size:

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

    Solo l'integrale di questa espressione dovrebbe essere utilizzato.Only the integer part of this expression should be used. Eliminare le parti restanti.Discard any remainder.

  4. Calcolare le dimensioni dei dati di lunghezza variabile:Calculate the variable-length data size:

    Se la tabella include colonne di lunghezza variabile, determinare la quantità di spazio utilizzata per l'archiviazione delle colonne nella riga:If there are variable-length columns in the table, determine how much space is used to store the columns within the row:

    Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_SizeVariable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size

    I byte aggiunti a Max_Var_Size servono a tenere traccia di ogni colonna a lunghezza variabile.The bytes added to Max_Var_Size are for tracking each variable-length column. Questa formula si basa sul presupposto che tutte le colonne a lunghezza variabile siano piene al 100%.This formula assumes that all variable-length columns are 100 percent full. Se si prevede una percentuale inferiore di uso dello spazio di archiviazione delle colonne a lunghezza variabile, è possibile modificare il valore di Max_Var_Size in base a tale percentuale per ottenere una stima più accurata delle dimensioni complessive della tabella.If you anticipate that a smaller percentage of the variable-length column storage space will be used, you can adjust the Max_Var_Size value by that percentage to yield a more accurate estimate of the overall table size.

    Nota

    È possibile combinare colonne varchar, nvarchar, varbinaryo sql_variant che causano il superamento del limite di 8.060 byte previsto per la larghezza totale definita della tabella.You can combine varchar, nvarchar, varbinary, or sql_variant columns that cause the total defined table width to exceed 8,060 bytes. La lunghezza di ogni colonna deve essere compresa nel limite di 8.000 byte per una colonna varchar, nvarchar,varbinaryo sql_variant .The length of each one of these columns must still fall within the limit of 8,000 bytes for a varchar, nvarchar,varbinary, or sql_variant column. Le larghezze combinate di tali colonne possono tuttavia superare il limite di 8.060 byte in una tabella.However, their combined widths may exceed the 8,060 byte limit in a table.

    Se non sono disponibili colonne a lunghezza variabile, impostare Variable_Data_Size su 0.If there are no variable-length columns, set Variable_Data_Size to 0.

  5. Calcolare le dimensioni totali della riga:Calculate the total row size:

    Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4

    Il valore 4 nel formula è l'overhead dell'intestazione di riga della riga di dati.The value 4 in the formula is the row header overhead of the data row.

  6. Calcolare il numero di righe per pagina (8096 byte liberi per pagina):Calculate the number of rows per page (8096 free bytes per page):

    Rows_Per_Page = 8096 / (Row_Size + 2)Rows_Per_Page = 8096 / (Row_Size + 2)

    Poiché le righe non si estendono su più pagine, il numero di righe per pagina deve essere arrotondato alla riga completa più vicina.Because rows do not span pages, the number of rows per page should be rounded down to the nearest whole row. Il valore 2 nella formula è per la voce di riga nella matrice di slot della pagina.The value 2 in the formula is for the row's entry in the slot array of the page.

  7. Calcolare il numero di pagine necessario per archiviare tutte le righe:Calculate the number of pages required to store all the rows:

    Num_Pages = Num_Rows / Rows_Per_PageNum_Pages = Num_Rows / Rows_Per_Page

    Il numero di pagine stimato deve essere arrotondato alla pagina intera più vicina.The number of pages estimated should be rounded up to the nearest whole page.

  8. Infine, calcolare la quantità di spazio necessaria per archiviare i dati nell'heap (8192 byte totali per pagina):Calculate the amount of space that is required to store the data in the heap (8192 total bytes per page):

    Dimensioni dell'heap (byte) = 8192 x Num_PagesHeap size (bytes) = 8192 x Num_Pages

    Il calcolo non prende in considerazione i fattori seguenti:This calculation does not consider the following:

  • PartizionamentoPartitioning

    L'overhead dello spazio derivante dal partizionamento è minimo, ma difficile da calcolare.The space overhead from partitioning is minimal, but complex to calculate. Non è fondamentale includerlo.It is not important to include.

  • Pagine di allocazioneAllocation pages

    Esiste almeno una pagina IAM utilizzata per tenere traccia delle pagine allocate su un heap, ma l'overhead dello spazio è minimo e non è presente alcun algoritmo per calcolare in modo deterministico l'esatto numero di pagine IAM che verranno utilizzate.There is at least one IAM page used to track the pages allocated to a heap, but the space overhead is minimal and there is no algorithm to deterministically calculate exactly how many IAM pages will be used.

  • Valori LOBLarge object (LOB) values

    L'algoritmo per determinare con esattezza la quantità di spazio usata per archiviare i tipi di dati LOB varchar(max), varbinary(max), nvarchar(max), text, ntextxmle image è complesso.The algorithm to determine exactly how much space will be used to store the LOB data types varchar(max), varbinary(max), nvarchar(max), text, ntextxml, and image values is complex. È sufficiente aggiungere soltanto le dimensioni medie dei valori LOB previsti e aggiungerle alle dimensioni totali dell'heap.It is sufficient to just add the average size of the LOB values that are expected and add that to the total heap size.

  • CompressioneCompression

    Non è possibile pre-calcolare la dimensione di un heap compresso.You cannot pre-calculate the size of a compressed heap.

  • Colonne di tipo sparseSparse columns

    Per informazioni sui requisiti di spazio delle colonne di tipo sparse, vedere Usare le colonne di tipo sparse.For information about the space requirements of sparse columns, see Use Sparse Columns.

Vedere ancheSee Also

Heap (tabelle senza indici cluster) Heaps (Tables without Clustered Indexes)
Descrizione di indici cluster e non cluster. Clustered and Nonclustered Indexes Described
Creare indici cluster Create Clustered Indexes
Creare indici non cluster Create Nonclustered Indexes
Stima delle dimensioni di una tabella Estimate the Size of a Table
Stima delle dimensioni di un indice cluster Estimate the Size of a Clustered Index
Stima delle dimensioni di un indice non cluster Estimate the Size of a Nonclustered Index
Stima delle dimensioni di un database Estimate the Size of a Database