Udostępnij za pośrednictwem


Zarządzanie alokacje fragment i ilość wolnego miejsca

The SQL Server data structures that manage fragment allocations and track free space have a relatively simple structure. Ten ma następujące zalety:

  • Informacje o ilości wolnego miejsca gęsto spakowane, względnie te informacje zawierają kilka stron.

    Powoduje to zwiększenie szybkości przez zmniejszenie ilości odczytów dysku, które są wymagane do pobierania informacji o alokacji.Także zwiększa prawdopodobieństwo, że podział strony zostanie przebywać w pamięci i nie wymagają więcej odczytów.

  • Większość informacji alokacji nie jest powiązane ze sobą.Ułatwia to zachowanie informacje dotyczące alokacji.

    Każdy przydział strona lub dezalokacji można wykonywać szybko.Zmniejsza to rywalizacji między równoczesnych zadań do przydzielania lub Cofnij przydzielanie strony.

Zarządzanie alokacje fragment

Program SQL Server używa dwa rodzaje mapy alokacji do rejestrowania alokacji zakresy:

  • Tablica alokacji globalne (GAM)

    Strony GAM rejestrować zakresów, które zostały już przydzielone.Każdy GAM obejmuje zakresy 64 000 lub prawie 4 GB danych.GAM ma jeden bit dla każdego fragment w danym okresie obejmuje.Jeśli bit ma wartość 1, fragment jest bezpłatna; Jeśli bit ma wartość 0, fragment jest przydzielona.

  • Udostępnione globalnego tablicy alokacji (SGAM)

    strona SGAM rejestrować zakresów, które są aktualnie używane jako zakresy mieszane i mieć co najmniej jedną strona nieużywane.Każdy SGAM obejmuje zakresy 64 000 lub prawie 4 GB danych.SGAM ma jeden bit dla każdego fragment w danym okresie obejmuje.Jeśli bit ma wartość 1, w zakresie jest używany jako fragment mieszane i ma wolne strona.Jeśli bit ma wartość 0, fragment nie jest używana jako fragment mieszane, lub jest mieszanego fragment i są używane wszystkie strony.

Każdy fragment ma następujące desenie bit zestaw GAM i SGAM, na podstawie jego użycie bieżącego.

Bieżące użycie fragment

Bit GAM, ustawianie

Bit SGAM, ustawianie

Wolny, nie używane

1

0

fragment jednolite lub pełnym zakresie mieszanych

0

0

fragment mieszane ze stronami wolne

0

1

Powoduje to proste fragment zarządzania algorytmów.Przydzielić jednolitego fragment Database Engine przeszukuje GAM 1 bitu i konfiguruje ją na wartość 0. Do znalezienia w zakresie mieszane ze stronami wolnego, Database Engine przeszukuje SGAM 1 bitu. Przydzielić mieszanego fragment, Database Engine przeszukuje GAM 1 bitu, ustawi ją na wartość 0, a następnie ustawia również odpowiadający mu bit w SGAM na 1. Aby zwolnić fragment, Database Engine Upewnienie się, że GAM bit jest zestaw 1 i SGAM bit jest zestaw na 0. Algorytmy, które są aktualnie używane wewnętrznie przez Database Engine są bardziej złożone niż to, co jest opisane w tym temacie, ponieważ Database Engine rozpowszechnia dane równomiernie w bazie danych. Jednak nawet rzeczywistego algorytmy są uproszczony przez nie ma potrzeby zarządzania łańcuchów fragment informacji alokacji.

Śledzenie ilości wolnego miejsca

Stan alokacji z każdej strony, czy została alokowana pojedynczej strony oraz ilość wolnego miejsca na każdej stronie należy zarejestrować stron Strona wolnego miejsca (PFS).Doskonałe utajnienie przekazywania ma jeden bajt dla każdej strona, rejestrujących czy odbywa się strona, a jeśli tak, czy jest pusta, 1 do 50 procent pełne, 51-80 procent, pełne 81 do 95 procent lub 96-100 procent.

Po fragment została przydzielona do obiektu, Database Engine używa doskonałego utajnienia przekazywania stron do rekordu w zakresie stron, które są przydzielone lub wolne. Informacje te są używane podczas Database Engine musi przydzielić nową strona. Ilość wolnego miejsca strona jest obsługiwana tylko na sterty i tekstu/obrazu strona.Jest ono używane podczas Database Engine ma się znaleźć strona z wolnego miejsca do przechowywania nowo wstawionego wiersza. Indeksy nie wymagają czy wolnego miejsca strona można śledzić, ponieważ jest punktem, od którego należy wstawić nowy wiersz zestaw przez wartości kluczy indeksu.

Strona doskonałe utajnienie przekazywania jest pierwsza strona po stronie nagłówka pliku w pliku danych (numer strony 1).To jest po stronie GAM (stronę nr 2), a następnie na stronie SGAM (strona 3).Brak strona doskonałe utajnienie przekazywania około 8000 stron w rozmiar po pierwszej stronie doskonałe utajnienie przekazywania.Nie ma innego zakresów stron 64,000 GAM po pierwszej stronie GAM strona 2, a inny SGAM strona 64 000 zakresy po pierwszej stronie SGAM strona 3.Na poniższym rysunku przedstawiono kolejność stron używanych przez Database Engine Aby przydzielić i zarządzać zakresów.

Pages used to allocate and manage extents