Udostępnij przez


Szacowanie rozmiaru Indeks klastrowany

Poniższe kroki umożliwiają oszacować ilość miejsca jest wymagana do przechowywania danych w indeks klastrowany:

  1. Obliczyć ilość miejsca używanego do przechowywania danych w poziom liścia poziom indeks klastrowany.

  2. Obliczyć ilość miejsca używanego do przechowywania informacji indeks klastrowany indeksu.

  3. Suma obliczonych wartości.

W kroku 1.Obliczyć ilość miejsca używanego do przechowywania danych na poziomie liścia

  1. Określ liczbę wierszy, które są obecne 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 dla ich przechowywania.

    Obliczyć ilość miejsca, że zajmuje się każdej z tych grup kolumn w wierszu danych.Specyfikacja typ i długość danych zależy od rozmiaru kolumna.Aby uzyskać więcej informacji, zobacz Typy 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 = bajt całkowity rozmiar wszystkich kolumn o stałej długości

    Num_Variable_Cols = liczba kolumn o zmiennej długości

    Max_Var_Size = rozmiar w bajtach maksymalny wszystkich kolumn o zmiennej długości

  3. Jeżeli indeks klastrowany jest nieunikatowy, element nadający unikatowość kolumna:

    element nadający unikatowość jest nullable o zmiennej długości kolumna.Będzie nonnull i rozmiar w wierszach, które mają wartości klucz 4 bajtów.Wartość ta jest częścią klucz indeksu i jest wymagane, aby upewnić się, że każdy wiersz ma wartość klucz unikatowego.

    Num_Cols = Num_Cols + 1

    Num_Variable_Cols = Num_Variable_Cols + 1

    Max_Var_Size = Max_Var_Size + 4

    Te modyfikacje założono, że wszystkie wartości będą nieunikatowy.

  4. Część wiersza, znany jako bitmapy null jest zarezerwowany do zarządzania opcje dopuszczania wartości null kolumna.Obliczyć jej rozmiar:

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

    Należy stosować tylko część całkowitą liczby poprzednich wyrażenie; odrzucić wszystkie pozostałe.

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

    Jeśli istnieją o zmiennej długości kolumny w tabela, ustalić ilość miejsca jest używany do przechowywania kolumny w wierszu:

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

Bajty dodane do ***Max_Var_Size*** dla każdej zmiennej kolumna śledzenia.Formuła ta zakłada, że wszystkie kolumny o zmiennej długości są pełne 100 procent.Jeśli przewidujesz, że będą używane mniejszy procent miejsca o zmiennej długości kolumna, można dopasować ***Max_Var_Size*** wartość przez wartość procentowa na plon dokładniejsze oszacowanie całkowitego rozmiaru tabela.

<div class="alert">


> [!WARNING]
> <P>Można łączyć varchar, nvarchar, varbinary, lub sql_variant kolumny, które powodują szerokość całkowita zdefiniowanej tabela przekracza 8,060 bajtów.Długość każdego z tych kolumn nadal muszą mieścić się w granicach 8000 bajtów dla varchar, varbinary, lub sql_variant kolumna, a 4 000 bajtów dla nvarchar kolumna.Jednak ich szerokości Scalonej może przekroczyć limit bajt 8,060 w tabela.Aby uzyskać więcej informacji, zobacz <A href="ms186981(v=sql.105).md">Przepełnienie wiersz danych powyżej 8 KB</A>.</P>


</div>

Jeśli brak kolumn o zmiennej długości, zestaw ***Variable_Data_Size*** na 0.
  1. Oblicz rozmiar wiersza sumy:

    Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4

    Wartość 4 jest narzutów wiersza nagłówka wiersza danych.

  2. Obliczyć liczbę wierszy na strona (8096 bajty wolne na strona):

    Rows_Per_Page = 8096 / (Row_Size + 2)

    Ponieważ wierszy nie obejmują stron, liczbę wierszy strona powinien zaokrąglana niedziałający do najbliższego całego wiersza.2 W formule wartość wpisu wiersza w tablicy gniazdo strona.

  3. Obliczyć liczbę zarezerwowanych wolnych wierszy na strona, na podstawie współczynnik wypełnienia określonych:

    Free_Rows_Per_Page = 8096 x ((100- Fill_Factor) / 100) / (Row_Size + 2)

    Używany w obliczeniach współczynnik wypełnienia jest całkowitą zamiast procent.Ponieważ wierszy nie obejmują stron, liczbę wierszy strona powinien zaokrąglana niedziałający do najbliższego całego wiersza.Pofragmentowaniu współczynnik wypełnienia więcej danych będą przechowywane na każdym strona i będzie mniej stronas.2 W formule wartość wpisu wiersza w tablicy gniazdo strona.

  4. Obliczyć liczbę stron wymaganych do przechowywania wszystkich wierszy:

    Num_Leaf_Pages = Num_Rows / (Rows_Per_Page - Free_Rows_Per_Page)

    Liczba stron szacowany powinny zaokrąglana w górę do najbliższej całej strona.

  5. Obliczyć ilość miejsca wymaganego do przechowywania danych w poziom liścia poziom (8192 bajty na strona):

Leaf_space_used* = 8192 x *Num_Leaf_Pages

W kroku 2.Obliczyć ilość miejsca używanego do przechowywania informacji indeksu

Poniższe kroki można oszacować ilość miejsca jest wymagana do przechowywania wyższe poziomy indeksu:

  1. Określ liczbę kolumn o stałej długości i o zmiennej długości klucz indeksu i obliczyć miejsca wymaganego dla ich składowanie:

    klucz Kolumny indeksu można dołączyć kolumny o stałej długości i o zmiennej długości.Aby oszacować rozmiar wiersza wnętrza poziom indeksu, obliczyć miejsca że zajmuje każdej z tych grup kolumn w wierszu indeksu.Specyfikacja typ i długość danych zależy od rozmiaru kolumna.Aby uzyskać więcej informacji, zobacz Typy danych (aparat bazy danych).

    Num_Key_Cols = całkowita liczba kolumn klucz (o stałej długości i o zmiennej długości)

    Fixed_Key_Size = bajt całkowity rozmiar wszystkich kolumn klucz o ustalonej długości

    Num_Variable_Key_Cols = numer kolumny klucz o zmiennej długości

    Max_Var_Key_Size = rozmiar w bajtach maksymalny wszystkie kolumny klucz o zmiennej długości

  2. Konto element nadający unikatowość wszelkie potrzebne, jeśli nieunikatowy indeks:

    element nadający unikatowość jest nullable o zmiennej długości kolumna.Będzie nonnull i rozmiar w wierszach, które ma indeks nieunikatowy wartości klucz 4 bajtów.Wartość ta jest częścią klucz indeksu i jest wymagane, aby upewnić się, że każdy wiersz ma wartość klucz unikatowego.

    Num_Key_Cols = Num_Key_Cols + 1

    Num_Variable_Key_Cols = Num_Variable_Key_Cols + 1

    Max_Var_Key_Size = Max_Var_Key_Size + 4

    Te modyfikacje założono, że wszystkie wartości będą nieunikatowy.

  3. Oblicz rozmiar bitmapy null:

    W przypadku pustych kolumn w indeksie klucz, część wiersza indeksu jest zarezerwowana dla null bitmap.Obliczyć jej rozmiar:

    Index_Null_Bitmap = 2 + ((liczba kolumn w wierszu indeksu + 7) / 8)

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

    Jeśli nie ma żadnych pustych kolumn klucz zestaw Index_Null_Bitmap na 0.

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

    W przypadku zmiennej długości kolumn w indeksie, określają, ile miejsca jest używany do przechowywania kolumny w wierszu indeksu:

Variable_Key_Size* = 2 + (Num_Variable_Key_Cols x 2) + *Max_Var_Key_Size

Bajty dodane do ***Max_Var_Key_Size*** dla śledzenia każdej kolumna o zmiennej długości.Formuła ta zakłada, że wszystkie kolumny o zmiennej długości są pełne 100 procent.Jeśli przewidujesz, że będą używane mniejszy procent miejsca o zmiennej długości kolumna, można dopasować ***Max_Var_Key_Size*** wartość przez wartość procentowa na plon dokładniejsze oszacowanie całkowitego rozmiaru tabela.

Jeśli brak kolumn o zmiennej długości, zestaw ***Variable_Key_Size*** na 0.
  1. Oblicz rozmiar indeksu wierszy:

    Index_Row_Size = Fixed_Key_Size + Variable_Key_Size + Index_Null_Bitmap 6 (dla wskaźnika identyfikator strona podrzędność) + 1 (dla wiersza nagłówka narzutów wiersza indeks)

  2. Obliczyć numer indeksu wierszy na strona (8096 bajty wolne na strona):

    Index_Rows_Per_Page = 8096 / (Index_Row_Size + 2)

    Ponieważ indeks wierszy nie obejmują stron, numer indeksu wierszy strona powinien zaokrąglana niedziałający do najbliższego całego wiersza.2 W formule jest zapis wiersza w tablicy gniazdo strona.

  3. Obliczyć liczbę poziomów w indeksie:

    Non-leaf_Levels = 1 + dziennika Index_Rows_Per_Page (Num_Leaf_Pages / Index_Rows_Per_Page)

    Zaokrąglanie tej wartości do najbliższej liczby całkowitej.Ta wartość nie obejmuje poziom liścia poziom indeks klastrowany.

  4. Obliczanie liczby nie-liść stron w indeksie:

Num_Index_Pages =∑poziom (Num_Leaf_Pages / (Index_Rows_Per_Pagepoziom))

1 \<= poziom \<= ***bez leaf_Levels***

Zaokrąglanie każdego summand w górę do najbliższej liczby całkowitej.Prosty przykład zapewniającą indeks gdzie ***Num_Leaf_Pages*** = 1000 i ***Index_Rows_Per_Page*** = 25.Pierwszy poziom indeksu powyżej poziom liścia poziom przechowuje 1000 wierszy indeksu, który jest jeden indeks wiersza na poziom liścia strona i indeks 25 wierszy można zmieścić strona.Oznacza to, że 40 strony mają obowiązek przechowywać te wiersze 1000 indeksu.Następny poziom indeksu ma przechowywać 40 wierszy.Oznacza to, że wymaga on 2 strony.Ostateczny poziom indeksu ma się do przechowywania 2 wierszy.Oznacza to, że wymaga on strona 1.Daje to innych niż 43-liść strony indeksowe.Gdy numery te są używane w formułach poprzedniego, wynik jest następujący:

***Non-leaf_Levels*** = 1 + dziennika25 (1000 / 25) = 3

***Num_Index_Pages*** = 1000 /(253) + 1000 / (252) + 1000 / (251) = 1 + 2 + 40 = 43, czyli numer strony w przykładzie.
  1. Oblicz rozmiar indeksu (8192 bajty na strona):

Index_Space_Used* = 8192 x *Num_Index_Pages

W kroku 3.Suma obliczonych wartości.

Suma wartości z dwóch poprzednich kroków:

Rozmiar (bajty) indeksu klastrowanego = Leaf_Space_Used + Index_Space_used

Obliczenie nie rozważyć następujące kwestie:

  • Partycjonowanie

    Miejsca napowietrznych z partycjonowanie jest minimalny, lecz złożone obliczenia.Nie ważne jest uwzględnienie.

  • Podział stron

    Istnieje co najmniej jedna strona IAM, używane do śledzenia stron przydzielonej sterty, ale jest minimalne obciążenie miejsca i nie nie algorytm obliczania deterministically dokładnie używanych stron IAM.

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

    Algorytm ustalania dokładnie miejsca będą używane do przechowywania typów dane LOB varchar(max), varbinary(max), nvarchar(max), text, ntext, xml, i image wartości jest złożony.Wystarczy po prostu dodać średni rozmiar wartości LOB, które według przewidywań, należy pomnożyć przez Num_Rowsi że dodać do całkowitego indeks klastrowany rozmiar.

  • Kompresja

    Rozmiar skompresowanych indeks nie jest pre-calculate.