Szacowanie rozmiaru indeks nieklastrowany
Wykonaj następujące kroki, aby oszacować ilość miejsca jest wymagana do przechowywania indeks nieklastrowany:
Obliczyć zmiennych używanych w kroki 2 i 3.
Obliczyć ilość miejsca używanego do przechowywania informacji o indeksie poziom liścia poziom indeks nieklastrowany.
Obliczyć ilość miejsca używanego do przechowywania informacji indeksu w nie-liść poziomy indeks nieklastrowany.
Suma obliczonych wartości.
W kroku 1.Obliczenia zmiennych używanych w kroki 2 i 3
Następujące kroki służy do obliczania zmiennych, które są używane do oszacowania ilości miejsca wymaganego do przechowywania wyższe poziomy indeksu.
Określ liczbę wierszy, które są obecne w tabela:
Num_Rows = liczba wierszy w tabela
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
Konto dla lokalizatora wiersz danych jest wymagane, jeśli nieunikatowy indeks:
W przypadku nieunikatowy indeks nieklastrowany lokalizatora wiersz danych jest połączona z nieklastrowany indeks klucz do wyprodukowania unikatowe wartości klucz dla każdego wiersza.
Jeśli indeks nieklastrowany nad sterty, lokalizator wiersz danych jest sterty RID.Jest to rozmiar 8 bajtów.
Num_Key_Cols = Num_Key_Cols + 1
Num_Variable_Key_Cols = Num_Variable_Key_Cols + 1
Max_Var_Key_Size = Max_Var_Key_Size + 8
Jeśli jest indeks nieklastrowany indeks klastrowany, lokalizator wiersz danych jest klastrowanie klucz.Kolumny, które muszą być połączone z klucza indeks nieklastrowany są kolumn w kluczu klastrowania, które nie są jeszcze obecne w zestaw indeks nieklastrowany kolumn klucza.
Num_Key_Cols = Num_Key_Cols + numer klastrowanie nie w kolumnach klucz zestaw nieklastrowany indeks klucz kolumn (+ 1, jeśli nieunikatowy indeks klastrowany)
Fixed_Key_Size = Fixed_Key_Size + całkowity rozmiar w bajtach o stałej długości usługa klastrowania nie w kolumnach klucz zestaw indeks nieklastrowany kolumn klucz
Num_Variable_Key_Cols = Num_Variable_Key_Cols + numer zmiennej długości, usługa klastrowania nie w kolumnach klucz zestaw nieklastrowany indeks klucz kolumn (+ 1, jeśli nieunikatowy indeks klastrowany)
Max_Var_Key_Size = Max_Var_Key_Size + rozmiar w bajtach maksymalny o zmiennej długości, usługa klastrowania nie w kolumnach klucz zestaw nieklastrowany indeks klucz kolumn (+ 4 Jeśli nieunikatowy indeks klastrowany)
Część wiersza, znany jako bitmapy null mogą być zastrzeżone do zarządzania opcje dopuszczania wartości null kolumna.Obliczyć jej rozmiar:
W przypadku pustych kolumn w kluczu indeksu, włączając wszelkie niezbędne klastrowanie kolumny klucz, jak opisano w kroku 1.3 część wiersza indeksu jest zarezerwowana dla null bitmap.
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.
Oblicz rozmiar danych o zmiennej długości:
Istnieją o zmiennej długości kolumn klucz indeksu, w tym wszystkie kolumny klucz potrzebnego indeks klastrowany określić, 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 każdej zmiennej kolumna śledzenia.Formuła ta zakłada, że wszystkie kolumna 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.
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)
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.
W kroku 2.Obliczyć ilość miejsca używanego do przechowywania informacji indeksu na poziomie liścia
Poniższe kroki umożliwiają oszacować ilość miejsca jest wymagana do przechowywania poziom liścia poziomu indeksu.Konieczne będzie wartości zachowane z kroku 1, aby ukończyć ten krok.
Określ liczbę kolumn o stałej długości i o zmiennej długości w poziom liścia poziom i obliczyć miejsca wymaganego dla ich składowanie:
Ostrzeżenie
Indeks nieklastrowany przy tym nie można rozszerzyćklucz oprócz indeksu klucz kolumny.Te dodatkowe kolumny są przechowywane tylko w poziom liścia poziom indeks nieklastrowany.Aby uzyskać więcej informacji, zobacz Tworzenie indeksów z uwzględnionych kolumn.
Ostrzeżenie
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.Dotyczy to również indeks nieklastrowany liść wiersze, które zostały uwzględnione w kolumnach.Aby uzyskać więcej informacji, zobacz Przepełnienie wiersz danych powyżej 8 KB.
Jeśli indeks nieklastrowany nie ma żadnych uwzględnionych kolumn, należy użyć wartości z kroku 1, włączając wszelkie modyfikacje określona w kroku 1.3:
Num_Leaf_Cols* = *Num_Key_Cols
Fixed_Leaf_Size* = *Fixed_Key_Size
Num_Variable_Leaf_Cols* = *Num_Variable_Key_Cols
Max_Var_Leaf_Size* = *Max_Var_Key_Size
Jeśli indeks nieklastrowany uwzględnionych kolumn, należy dodać odpowiednie wartości na wartości z kroku 1, w tym wszelkie modyfikacje w kroku 1.3.Specyfikacja typ i długość danych zależy od rozmiaru kolumna.Aby uzyskać więcej informacji, zobacz [Typy danych (aparat bazy danych)](ms187594\(v=sql.105\).md).
***Num_Leaf_Cols*** = ***Num_Key_Cols*** + liczba uwzględnionych kolumn
***Fixed_Leaf_Size*** = ***Fixed_Key_Size*** + rozmiar w bajtach całkowity o stałej długości uwzględnione kolumny
***Num_Variable_Leaf_Cols*** = ***Num_Variable_Key_Cols*** + numer o zmiennej długości dołączony kolumn
***Max_Var_Leaf_Size*** = ***Max_Var_Key_Size*** + rozmiar w bajtach maksymalną długość zmiennej uwzględnione kolumny
Konto dla lokalizatora wiersz danych:
W przypadku nieunikatowy indeks nieklastrowany obciążenie lokalizatora wiersz danych już została uznana za w kroku 1.3 i są wymagane nie dodatkowe modyfikacje.Przejdź do następnego kroku.
Jeśli indeks nieklastrowany jest unikatowa, lokalizator wiersz danych muszą zostać uwzględnione we wszystkich wierszach w poziom liścia poziom.
Jeśli indeks nieklastrowany nad sterty, lokalizator wiersz danych jest sterty RID (rozmiar 8 bajtów).
Num_Leaf_Cols = Num_Leaf_Cols + 1
Num_Variable_Leaf_Cols = Num_Variable_Leaf_Cols + 1
Max_Var_Leaf_Size = Max_Var_Leaf_Size + 8
Jeśli jest indeks nieklastrowany indeks klastrowany, lokalizator wiersz danych jest klastrowanie klucz.Kolumny, które muszą być połączone z klucza indeks nieklastrowany są kolumn w kluczu klastrowania, które nie są jeszcze obecne w zestaw indeks nieklastrowany kolumn klucza.
Num_Leaf_Cols = Num_Leaf_Cols + numer klastrowanie nie w kolumnach klucz zestaw nieklastrowany indeks klucz kolumn (+ 1, jeśli nieunikatowy indeks klastrowany)
Fixed_Leaf_Size = Fixed_Leaf_Size + numer o stałej długości usługa klastrowania nie w kolumnach klucz zestaw indeks nieklastrowany kolumn klucz
Num_Variable_Leaf_Cols = Num_Variable_Leaf_Cols + numer zmiennej długości, usługa klastrowania nie w kolumnach klucz zestaw nieklastrowany indeks klucz kolumn (+ 1, jeśli nieunikatowy indeks klastrowany)
Max_Var_Leaf_Size = Max_Var_Leaf_Size + rozmiar w bajtach długość zmiennej usługa klastrowania nie w kolumnach klucz zestaw nieklastrowany indeks klucz kolumn (+ 4 Jeśli nieunikatowy indeks klastrowany)
Oblicz rozmiar bitmapy null:
Leaf_Null_Bitmap = 2 + ((Num_Leaf_Cols + 7) / 8)
Należy używać tylko część całkowitą liczby poprzedniego wyrażenie.Odrzucić wszystkie pozostałe.
Oblicz rozmiar danych o zmiennej długości:
Jeśli indeks klucz o zmiennej długości kolumny, w tym wszelkie niezbędne klastrowanie kolumny klucz opisane wcześniej w kroku 2.2, określić, ile miejsca jest używany do przechowywania kolumny w wierszu indeksu:
Variable_Leaf_Size* = 2 + (Num_Variable_Leaf_Cols x 2) + *Max_Var_Leaf_Size
Bajty dodane do ***Max_Var_Key_Size*** dla każdej zmiennej kolumna śledzenia.Formuła ta zakłada, że wszystkie kolumna 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_Leaf_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_Leaf_Size*** na 0.
Oblicz rozmiar indeksu wierszy:
Leaf_Row_Size = Fixed_Leaf_Size + Variable_Leaf_Size + Leaf_Null_Bitmap 6 (dla wskaźnika identyfikator strona podrzędność) + 1 (dla wiersza nagłówka narzutów wiersza indeks)
Obliczyć numer indeksu wierszy na strona (8096 bajty wolne na strona):
Leaf_Rows_Per_Page = 8096 / (Leaf_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.
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) / (Leaf_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 jest zapis wiersza w tablicy gniazdo strona.
Obliczyć liczbę stron wymaganych do przechowywania wszystkich wierszy:
Num_Leaf_Pages = Num_Rows / (Leaf_Rows_Per_Page - Free_Rows_Per_Page)
Liczba stron szacowany powinny zaokrąglana w górę do najbliższej całej strona.
Oblicz rozmiar indeksu (8192 bajty na strona):
Leaf_Space_Used* = 8192 x *Num_Leaf_Pages
W kroku 3.Obliczyć ilość miejsca używanego do przechowywania indeksu informacji bez-liść poziomy
Wykonaj następujące kroki, aby oszacować ilość miejsca jest wymagana do przechowywania pośredniego i główne poziomach indeksu.Konieczne będzie wartości zachowane z kroki 2 i 3, aby ukończyć ten krok.
Obliczanie liczby nie-liść poziomów w indeksie:
Poziomy innego niż liść = 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 nieklastrowany.
Obliczanie liczby nie-liść stron w indeksie:
Num_Index_Pages* = ∑poziom (Num_Leaf_Pages i Index_Rows_Per_Pagepoziom) gdzie 1 <= poziom <= *poziomy
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 2 strony.Ostateczny poziom indeksu ma się do przechowywania 2 wierszy.Oznacza to, że wymaga on strona 1.To daje inne 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.
- Oblicz rozmiar indeksu (8192 bajty na strona):
Index_Space_Used* = 8192 x *Num_Index_Pages
W kroku 4.Suma obliczonych wartości.
Suma wartości z dwóch poprzednich kroków:
- Indeks nieklastrowany rozmiar (bajty) = 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 oczekiwane, należy pomnożyć przez Num_Rowsi że dodać indeks nieklastrowany całkowity rozmiar.
Kompresja
Rozmiar skompresowanych indeks nie jest pre-calculate.
Zobacz także