Freigeben über


Schätzen der Größe eines Heaps

Mit den folgenden Schritten können Sie den Speicherplatz schätzen, der zum Speichern von Daten in einem Heap erforderlich ist:

  1. Geben Sie die Anzahl der Zeilen an, die in der Tabelle vorhanden sein werden:

    Num_Rows = Anzahl der Zeilen in der Tabelle

  2. Geben Sie die Anzahl der Spalten mit der festen und variablen Länge an und berechnen Sie den erforderlichen Speicherplatz für deren Speicherung.

    Berechnen Sie den Abstand, den jede dieser Spaltengruppen innerhalb der Datenzeile einnimmt. Die Größe einer Spalte hängt vom Datentyp und der Längenangabe ab.

    Num_Cols = Gesamtanzahl der Spalten (feste Länge und variable Länge)

    Fixed_Data_Size = Gesamtbytegröße aller Spalten mit fester Länge

    Num_Variable_Cols = Anzahl der Spalten mit variabler Länge

    Max_Var_Size = maximale Gesamtbytegröße aller Spalten mit variabler Länge

  3. Ein Teil der Zeile, der als NULL-Bitmap bezeichnet wird, ist für die Verwaltung der Spalten-Nullfähigkeit reserviert. Berechnen der Größe:

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

    Es sollte nur der ganzzahlige Teil dieses Ausdrucks verwendet werden. Verwerfen Sie alle Restlichen.

  4. Berechnen der Datengröße variabler Länge:

    Wenn in der Tabelle Spalten mit variabler Länge vorhanden sind, bestimmen Sie, wie viel Platz zum Speichern der Spalten in der Zeile verwendet wird:

    Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size

    Die zu Max_Var_Size hinzugefügten Bytes dienen zum Nachverfolgen der einzelnen Spalten mit variabler Länge. Bei dieser Formel wird davon ausgegangen, dass alle Spalten mit variabler Länge 100 Prozent voll sind. Wenn Sie davon ausgehen, dass ein kleinerer Prozentsatz des Speicherplatzes für spaltenvariable Spalten verwendet wird, können Sie den Max_Var_Size Wert um diesen Prozentsatz anpassen, um eine genauere Schätzung der Gesamttabellengröße zu erzielen.

    Hinweis

    Sie können varchar, nvarchar, varbinary oder sql_variant Spalten kombinieren, die dazu führen, dass die gesamte definierte Tabellenbreite 8.060 Bytes überschreitet. Die Länge jeder dieser Spalten darf den Grenzwert von 8.000 Bytes für eine varchar, nvarchar,``varbinary oder sql_variant Spalte nicht überschreiten. Ihre kombinierten Breiten können jedoch den Grenzwert von 8.060 Byte in einer Tabelle überschreiten.

    Wenn keine Spalten mit variabler Länge vorhanden sind, legen Sie Variable_Data_Size auf 0 fest.

  5. Berechnen der Gesamtzeilengröße:

    = Row_Size + Fixed_Data_Size + Variable_Data_SizeNull_Bitmap + 4

    Der Wert 4 in der Formel ist der Kopfzeilen-Overhead der Datenzeile.

  6. Berechnen sie die Anzahl der Zeilen pro Seite (8096 freie Bytes pro Seite):

    Rows_Per_Page = 8096 / (Row_Size + 2)

    Da Zeilen keine Seiten umfassen, sollte die Anzahl der Zeilen pro Seite auf die nächste ganze Zeile abgerundet werden. Der Wert 2 in der Formel steht für den Eintrag der Zeile im Slot-Array der Seite.

  7. Berechnen Sie die Anzahl der Seiten, die zum Speichern aller Zeilen erforderlich sind:

    = Num_Pages / Num_RowsRows_Per_Page

    Die Anzahl der geschätzten Seiten sollte auf die nächste ganze Seite aufgerundet werden.

  8. Berechnen Sie den Speicherplatz, der zum Speichern der Daten im Heap erforderlich ist (8192 Bytes pro Seite):

    Heapgröße (Bytes) = 8192 x Num_Pages

Bei dieser Berechnung wird Folgendes nicht berücksichtigt:

  • Partitionierung

    Der Speicherplatzaufwand bei der Partitionierung ist minimal, aber komplex zu berechnen. Es ist nicht wichtig, einzuschließen.

  • Zuordnungsseiten

    Es gibt mindestens eine IAM-Seite, um die einem Heap zugeordneten Seiten nachzuverfolgen, aber der Platzaufwand ist minimal und es gibt keinen Algorithmus, um genau zu berechnen, wie viele IAM-Seiten verwendet werden.

  • Werte für große Objekte (LOB)

    Der Algorithmus, der genau bestimmt, wie viel Speicherplatz verwendet wird, um die LOB-Datentypen varchar(max), , varbinary(max), nvarchar(max), textntextxml und image Werte zu speichern, ist komplex. Es reicht aus, nur die durchschnittliche Größe der branchenspezifischen Werte hinzuzufügen, die erwartet werden, und dies zur Gesamthapgröße hinzuzufügen.

  • Komprimierung

    Sie können die Größe eines komprimierten Heaps nicht vorab berechnen.

  • Sparsespalten

    Informationen zu den Platzanforderungen von Spalten mit geringem Abstand finden Sie unter Verwenden von Spalten mit sparse.for information about the space requirements of sparse columns, see Use Sparse Columns.

Siehe auch

Heaps (Tabellen ohne Cluster-Indizes)
Beschreibung von gruppierten und nicht gruppierten Indizes
Erstellen von gruppierten Indizes
Erstellen nicht gruppierter Indizes
Schätzen der Größe einer Tabelle
Schätzen der Größe eines gruppierten Indexes
Schätzen der Größe eines nicht gruppierten Indexes
Schätzen der Größe einer Datenbank