Udostępnij za pośrednictwem


Szacowanie rozmiaru sterty

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database 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.

    Notatka

    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_Size + Null_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 elementów:

  • Partycjonowanie

    Narzut przestrzeni związany z partycjonowaniem jest minimalny, ale złożony 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 istnieje algorytm umożliwiający deterministyczne obliczenie dokładnej liczby stron IAM, które zostaną użyte.

  • Wartości obiektów dużych (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), text, ntextxmloraz image, jest złożony. 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 na temat wymagań dotyczących przestrzeni w kolumnach rzadkich, zobacz Use Sparse Columns.

Zobacz też

Kupki (Tabele bez indeksów klastrowanych)
Indeksy klastrowane i nieklastrowane opisane
tworzenie indeksów klastrowanych
tworzenie indeksów nieklastrowanych
oszacować rozmiar tabeli
oszacować rozmiar klastrowanego indeksu
oszacować rozmiar indeksu nieklastrowanego
oszacować rozmiar bazy danych