Udostępnij przez


Oszacowanie rozmiaru sterty

Dotyczy do:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSystem Platform Analitycznych (PDW)Baza danych SQL w Microsoft Fabric

Poniższe kroki umożliwiają oszacowanie ilości miejsca wymaganego do przechowywania danych w stercie:

  1. Określ liczbę wierszy, które będą obecne w tabeli:

    • Num_Rows = liczba wierszy w tabeli
  2. Określ liczbę kolumn o stałej długości i zmiennej długości oraz oblicz miejsce wymagane dla ich magazynu:

    Oblicz przestrzeń zajmowaną przez każdą z tych grup kolumn w wierszu danych. Rozmiar kolumny zależy od typu danych i specyfikacji długości.

    • Num_Cols = całkowita liczba kolumn (o stałej długości i zmiennej długości)
    • Fixed_Data_Size = całkowity rozmiar bajtów wszystkich kolumn o stałej długości
    • Num_Variable_Cols = liczba kolumn o zmiennej długości
    • Max_Var_Size = maksymalny całkowity rozmiar bajtów wszystkich kolumn o zmiennej długości
  3. Część wiersza, znana jako mapa bitowa null, jest zarezerwowana do zarządzania nullowalnością kolumn. Oblicz jego rozmiar:

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

    Należy użyć tylko części całkowitej tego wyrażenia. Odrzuć resztę.

  4. Oblicz rozmiar danych o zmiennej długości:

    Jeśli w tabeli znajdują się kolumny o zmiennej długości, określ, ile miejsca jest używane do przechowywania kolumn w wierszu:

    • Rozmiar_Danych_Zmiennych = 2 + (Liczba_Kolumn_Zmiennych x 2) + Maks_Rozmiar_Zmiennej

    Bajty dodane do Max_Var_Size służą do śledzenia każdej kolumny o zmiennej długości. W tej formule przyjęto założenie, że wszystkie kolumny o zmiennej długości są pełne o 100%. Jeśli przewidujesz, że zostanie użyty mniejszy procent miejsca do magazynowania w kolumnie o zmiennej długości, możesz dostosować wartość Max_Var_Size o ten procent, aby uzyskać dokładniejsze oszacowanie ogólnego rozmiaru tabeli.

    Note

    Można połączyć varchar, nvarchar, varbinarylub kolumny sql_variant, które powodują, że łączna zdefiniowana szerokość tabeli przekroczy 8060 bajtów. Długość każdej z tych kolumn musi nadal mieścić się w granicach 8000 bajtów dla kolumny varchar, nvarchar, varbinarylub sql_variant. Jednak ich połączone szerokości mogą przekraczać limit 8060 bajtów w tabeli.

    Jeśli nie ma kolumn o zmiennej długości, ustaw wartość Variable_Data_Size na 0.

  5. Oblicz całkowity rozmiar wiersza:

    • = Row_Size + Fixed_Data_Size + Variable_Data_SizeNull_Bitmap + 4

    Wartość 4 w formule to nagłówek wiersza, który jest narzutem dla wiersza danych.

  6. Oblicz liczbę wierszy na stronę (8096 wolnych bajtów na stronę):

    • Rows_Per_Page = 8096 / (Row_Size + 2)

    Ponieważ wiersze nie obejmują stron, liczba wierszy na stronę powinna być zaokrąglona w dół do najbliższego całego wiersza. Wartość 2 w formule odpowiada wpisowi wiersza w tablicy slotów strony.

  7. Oblicz liczbę stron wymaganych do przechowywania wszystkich wierszy:

    • Liczba_Str = Liczba_Wierszy / Wiersze_Na_Str

    Liczba szacowanych stron powinna być zaokrąglona do najbliższej całej strony.

  8. Oblicz ilość miejsca wymaganego do przechowywania danych w stercie (8192 całkowita liczba bajtów na stronę):

    Rozmiar sterty (bajty) = 8192 x Num_Pages

To obliczenie nie uwzględnia następujących warunków:

  • Partycjonowanie: obciążenie związane z partycjonowaniem jest minimalne, ale złożone do obliczenia. Nie jest ważne, aby uwzględnić.

  • Strony alokacji: istnieje co najmniej jedna strona IAM używana do śledzenia stron przydzielonych do sterty, ale obciążenie przestrzeni jest minimalne i nie ma algorytmu deterministycznego obliczania dokładnie liczby stron IAM.

  • Wartości dużych obiektów (LOB): algorytm określający dokładnie, ile miejsca będzie używane do przechowywania typów danych LOB varchar(max), varbinary(max), nvarchar(max), nvarchar(max), text, ntextxml i wartości obrazów są złożone. Wystarczy dodać średni rozmiar oczekiwanych wartości LOB i dodać go do całkowitego rozmiaru sterty.

  • Kompresja: nie można wstępnie obliczyć rozmiaru skompresowanej sterty.

  • Kolumny rozrzedłe: aby uzyskać informacje o wymaganiach dotyczących miejsca w rozrzednych kolumnach, zobacz Używanie kolumn rozrzednych.