Schätzen der Größe eines HeapsEstimate the Size of a Heap

GILT FÜR: jaSQL Server jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Mit den folgenden Schritten können Sie den Umfang des Speicherplatzes schätzen, der zum Speichern von Daten in einem Heap erforderlich ist:You can use the following steps to estimate the amount of space that is required to store data in a heap:

  1. Geben Sie die Anzahl der Zeilen an, die die Tabelle enthalten wird:Specify the number of rows that will be present in the table:

    Num_Rows = Anzahl der Zeilen in der TabelleNum_Rows = number of rows in the table

  2. Geben Sie die Anzahl der Spalten mit fester und mit variabler Länge an, und berechnen Sie den Speicherplatz, der für deren Speicherung erforderlich ist:Specify the number of fixed-length and variable-length columns and calculate the space that is required for their storage:

    Berechnen Sie den Speicherplatz, der zum Speichern jeder dieser Spaltengruppen innerhalb der Datenzeile erforderlich ist.Calculate the space that each of these groups of columns occupies within the data row. Die Größe einer Spalte hängt von der Angabe für Datentyp und -länge ab.The size of a column depends on the data type and length specification.

    Num_Cols = Gesamtanzahl der Spalten (mit fester und variabler Länge)Num_Cols = total number of columns (fixed-length and variable-length)

    Fixed_Data_Size = Gesamtzahl der Bytes in allen Spalten fester LängeFixed_Data_Size = total byte size of all fixed-length columns

    Num_Variable_Cols = Anzahl der Spalten variabler LängeNum_Variable_Cols = number of variable-length columns

    Max_Var_Size = Maximale gesamte Bytegröße aller Spalten variabler LängeMax_Var_Size = maximum total byte size of all variable-length columns

  3. Ein Teil der Zeile, der als NULL-Bitmuster (Null_Bitmap) bezeichnet wird, wird für das Verwalten der NULL-Zulässigkeit der Spalte reserviert.Part of the row, known as the null bitmap, is reserved to manage column nullability. Berechnen Sie dessen Größe:Calculate its size:

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

    Nur der ganzzahlige Teil dieses Ausdrucks darf verwendet werden.Only the integer part of this expression should be used. Der Rest wird verworfen.Discard any remainder.

  4. Berechnen Sie die Größe der Daten variabler Länge:Calculate the variable-length data size:

    Wenn die Tabelle Spalten variabler Länge enthält, müssen Sie den Speicherplatz ermitteln, der von den Spalten innerhalb der Zeile verwendet wird: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 × 2) + Max_Var_SizeVariable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size

    Die zu Max_Var_Size hinzugefügten Bytes dienen der Nachverfolgung der einzelnen Spalten mit variabler Länge.The bytes added to Max_Var_Size are for tracking each variable-length column. Bei dieser Formel wird angenommen, dass alle Spalten variabler Länge zu 100 % gefüllt sind.This formula assumes that all variable-length columns are 100 percent full. Wenn sich abzeichnet, dass ein niedrigerer Prozentsatz des Speicherplatzes für Spalten variabler Länge verwendet wird, können Sie den Wert Max_Var_Size mithilfe dieses Prozentsatzes anpassen, um einen genaueren Schätzwert für die Gesamtgröße der Tabelle zu erhalten.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.

    Hinweis

    Sie können varchar-, nvarchar-, varbinary- oder sql_variant -Spalten kombinieren, mit dem Ergebnis, dass die definierte Tabellengesamtbreite größer als 8.060 Byte ist.You can combine varchar, nvarchar, varbinary, or sql_variant columns that cause the total defined table width to exceed 8,060 bytes. Die Länge jeder einzelnen Spalte unterliegt auch weiterhin der Beschränkung von 8.000 Byte für eine Spalte des Typs varchar, nvarchar, varbinary oder 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. Die kombinierte Breite kann jedoch den Grenzwert von 8.060 Byte in einer Tabelle überschreiten.However, their combined widths may exceed the 8,060 byte limit in a table.

    Wenn keine Spalten variabler Länge vorhanden sind, legen Sie Variable_Data_Size auf 0 fest.If there are no variable-length columns, set Variable_Data_Size to 0.

  5. Berechnen Sie die Gesamtzeilenlänge: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

    Der Wert 4 in der Formel ist der Zeilenüberschriftenaufwand der Datenzeile.The value 4 in the formula is the row header overhead of the data row.

  6. Berechnen Sie die Anzahl der Zeilen pro Seite (8.096 freie Byte pro Seite):Calculate the number of rows per page (8096 free bytes per page):

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

    Da sich eine Zeile nicht auf zwei Seiten erstreckt, muss die Anzahl der Zeilen pro Seite auf die nächste ganze Zeile abgerundet werden.Because rows do not span pages, the number of rows per page should be rounded down to the nearest whole row. Die Angabe 2 in der Formel bezieht sich auf den Eingang der Zeile in das Slotarray der Seite.The value 2 in the formula is for the row's entry in the slot array of the page.

  7. Berechnen Sie die Anzahl der Seiten, die zum Speichern aller Zeilen benötigt werden:Calculate the number of pages required to store all the rows:

    Num_Pages = Num_Rows / Rows_Per_PageNum_Pages = Num_Rows / Rows_Per_Page

    Die geschätzte Seitenanzahl muss auf die nächste ganze Seite aufgerundet werden.The number of pages estimated should be rounded up to the nearest whole page.

  8. Berechnen Sie den Umfang des Speicherplatzes, der zum Speichern der Daten im Heap erforderlich ist (insgesamt 8.192 Byte pro Seite):Calculate the amount of space that is required to store the data in the heap (8192 total bytes per page):

Wir hören Ihnen zu: Wenn Sie in diesem Artikel – beispielsweise in einem Schritt oder Codebeispiel – veraltete oder falsche Informationen finden, lassen Sie es uns bitte wissen.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Sie können unten auf dieser Seite im Abschnitt Feedback auf die Schaltfläche Diese Seite klicken.You can click the This page button in the Feedback section at the bottom of this page. Wir lesen jedes Feedback zu SQL in der Regel am nächsten Tag.We read every item of feedback about SQL, typically the next day. Vielen Dank.Thanks.

 Heap size (bytes) = 8192 x **_Num_Pages_**  

In dieser Berechnung wird Folgendes nicht berücksichtigt:This calculation does not consider the following:

  • PartitionierungPartitioning

    Der Speicherplatzaufwand aus der Partitionierung ist geringfügig, seine Berechnung jedoch komplex.The space overhead from partitioning is minimal, but complex to calculate. Er muss nicht berücksichtigt werden.It is not important to include.

  • ZuordnungsseitenAllocation pages

    Mindestens eine IAM-Seite wird zum Nachverfolgen der für einen Heap zugeordneten Seiten verwendet, der Speicherplatzaufwand ist jedoch nur minimal. Außerdem ist kein Algorithmus verfügbar, um deterministisch genau zu berechnen, wie viele IAM-Seiten verwendet werden.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.

  • LOB-Werte (Large Object)Large object (LOB) values

    Der Algorithmus zum Berechnen des genauen Speicherplatzes, der zum Speichern der Werte der LOB-Datentypen varchar(max) , varbinary(max) , nvarchar(max) , text, ntextxmlund image erforderlich ist, ist komplex.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. Es reicht aus, lediglich die Durchschnittsgröße der erwarteten LOB-Werte zu addieren und diesen Wert zur Heapgesamtgröße zu addieren.It is sufficient to just add the average size of the LOB values that are expected and add that to the total heap size.

  • KomprimierungCompression

    Sie können die Größe eines komprimierten Heaps nicht im Voraus berechnen.You cannot pre-calculate the size of a compressed heap.

  • Spalten mit geringer DichteSparse columns

    Informationen zu den Speicherplatzanforderungen von Sparsespalten finden Sie unter Use Sparse Columns.For information about the space requirements of sparse columns, see Use Sparse Columns.

Weitere InformationenSee Also

Heaps (Tabellen ohne gruppierte Indizes) Heaps (Tables without Clustered Indexes)
Beschreibung von gruppierten und nicht gruppierten Indizes Clustered and Nonclustered Indexes Described
Erstellen gruppierter Indizes Create Clustered Indexes
Erstellen nicht gruppierter Indizes Create Nonclustered Indexes
Schätzen der Größe einer Tabelle Estimate the Size of a Table
Schätzen der Größe eines gruppierten Indexes Estimate the Size of a Clustered Index
Schätzen der Größe eines nicht gruppierten Index Estimate the Size of a Nonclustered Index
Schätzen der Größe einer DatenbankEstimate the Size of a Database