Udostępnij za pośrednictwem


Estimating the Size of a Heap

Aby oszacować ilość miejsca, które są wymagane do przechowywania danych w sterty służą następujące czynności:

  1. Określ liczbę wierszy, które będą znajdować się w tabela:

    Num_Rows = Liczba wierszy w tabela

  2. Określ liczbę kolumn o stałej długości i o zmiennej długości i obliczyć miejsca wymaganego do ich przechowywania.

    Obliczyć miejsca zajmuje każdej z tych grup kolumny w obrębie wiersza danych.Rozmiar kolumna zależy od specyfikacji typ i długość danych.Aby uzyskać więcej informacji zobaczTypy danych (aparat bazy danych).

    Num_Cols = Całkowita liczba kolumn (o stałej długości i o zmiennej długości)

    Fixed_Data_Size = bajtach całkowity rozmiar wszystkich kolumn o stałej długości

    Num_Variable_Cols = Liczba kolumn o zmiennej długości

    Max_Var_Size = Maksymalna bajtów całkowitego rozmiaru wszystkich kolumn o zmiennej długości

  3. Część wiersza, znane jako null mapa bitowa jest zarezerwowany do zarządzania opcje dopuszczania wartości null kolumna.Obliczanie rozmiaru:

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

    Należy używać tylko część całkowita liczby tego wyrażenie.Odrzucić wszystkie pozostałe.

  4. Obliczanie rozmiaru danych o zmiennej długości:

    Jeśli istnieją o zmiennej długości kolumny w tabela, należy określić, ile miejsca jest używany do przechowywania w kolumnach w wierszu:

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

Bajty dodawane do ***Max\_Var\_Size*** służą do śledzenia poszczególnych kolumn o zmiennej długości.Ta formuła opiera się na założeniu, że wszystkie kolumny o zmiennej długości są 100 procent.Jeśli przewidujesz, że zostanie użyta wartość procentową mniejszą miejsca do magazynowania o zmiennej długości kolumna, można dopasować ***Max\_Var\_Size*** wartości przez procent w ten sposób, aby dawała dokładniejsze oszacowanie całkowitego rozmiaru tabela.

<div class="alert">


> [!NOTE]
> <P>Można łączyć varchar, nvarchar, varbinary, lub sql_variant kolumny, które powodują szerokość tabela zdefiniowaną całkowita przekracza 8,060 bajtów. 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.Jednak ich szerokości Scalonej może przekroczyć limit 8,060 bajt w tabela.Aby uzyskać więcej informacji zobacz<A href="ms186981(v=sql.100).md">Row-Overflow Data Exceeding 8 KB</A>.</P>


</div>

Jeśli brak kolumn o zmiennej długości, zestaw ***Variable\_Data\_Size*** to 0.
  1. Obliczanie rozmiaru wiersza sumy:

    Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4

    Wartość 4 w formule jest obciążenie wiersz nagłówka wiersza danych.

  2. Oblicza liczbę wierszy na strona (8096 wolnych bajtów strona):

    Rows_Per_Page = 8096 / (Row_Size + 2)

    Ponieważ wierszy nie span strona s, liczba wierszy na strona powinny być zaokrąglana niedziałający do najbliższej cały wiersz.Jest wartością 2 w formule w wierszu zapisu w tablicy gniazdo strona.

  3. Obliczanie liczby stron wymaganych do przechowywania wszystkich wierszy:

Num_Pages* = Num_Rows / *Rows_Per_Page

Liczba stron szacowane powinny zaokrąglana w górę do najbliższej całą strona.
  1. Oblicz ilość miejsca, które są wymagane do przechowywania danych w stosie (8192 całkowita liczba bajtów na każdej stronie):

    Rozmiar (w bajtach) sterty = 8192 x Num_Pages

To obliczenie nie bierze pod uwagę następujące czynności:

  • partycjonowanie

    Miejsce na dodatkowe obciążenie z partycjonowanie jest minimalny, ale skomplikowane obliczenia.Nie jest ważne, aby dołączyć.

  • Podział stron

    Istnieje co najmniej jedną strona IAM używane do śledzenia przydzielonych do sterty, stron, ale jest minimalne obciążenie miejsca i nie ma żadnych algorytm deterministically obliczyć dokładnie zostanie użyta liczba stron IAM.

  • Wartości dużych obiektów (LOB)

    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.Wystarczy po prostu dodać średni rozmiar wartości LOB, oczekuje się, które zwiększają rozmiar sterty całkowita.

  • Kompresja

    Nie można pre-calculate rozmiar skompresowanego sterty.