| Termin | Definicja |
|---|---|
| Przeorganizowanie indeksu | Przeorganizowanie indeksu to lżejsza alternatywa dla przebudowy, defragmentująca strony bez blokowania tabeli. Na czym polega przeorganizowanie indeksuPrzeorganizowanie indeksu w Microsoft SQL Server jest operacją wykonywaną na istniejącym indeksie, której celem jest uporządkowanie jego stron na poziomie liści. W czasie normalnych operacji zapisu strony indeksu mogą się rozdzielać, a logiczna kolejność stron może przestać odpowiadać ich kolejności fizycznej. Taki stan określa się jako fragmentację indeksu. Przeorganizowanie porządkuje zawartość stron i ogranicza fragmentację bez tworzenia indeksu od początku. Operację uruchamia się poleceniem Fragmentacja stron i wpływ na odczytFragmentacja ma znaczenie przede wszystkim dla indeksów, których dane są odczytywane zakresami, na przykład według daty, numeru dokumentu albo identyfikatora. Jeżeli strony liści indeksu są ułożone w kolejności logicznej innej niż kolejność fizyczna, SQL Server może wykonywać więcej operacji wejścia-wyjścia podczas skanowania zakresu. Na dysku talerzowym może to oznaczać dodatkowe ruchy głowicy, natomiast na dysku SSD problem zwykle wiąże się z większą liczbą odczytów i gorszym wykorzystaniem pamięci podręcznej. Poziom fragmentacji można sprawdzić za pomocą funkcji dynamicznego zarządzania Przebieg operacji bez przebudowy strukturyPrzeorganizowanie indeksu jest operacją online. SQL Server może wykonywać ją przy jednoczesnej pracy użytkowników, ponieważ nie wymaga pełnego, długotrwałego zablokowania całej tabeli na czas porządkowania. Nie oznacza to jednak braku blokad. Operacja może korzystać z blokad krótkotrwałych, zajmować zasoby procesora i generować obciążenie wejścia-wyjścia. Przy dużej aktywności zapisu przeorganizowanie może trwać dłużej, a jego efekt może być częściowo zmniejszany przez kolejne zmiany danych. W odróżnieniu od przebudowy indeksu polecenie Dobór działania po pomiarze fragmentacjiDecyzję o przeorganizowaniu należy podejmować na podstawie pomiaru konkretnego indeksu, a nie samego faktu, że tabela często się zmienia. Warto sprawdzić, czy zapytania wykonują skanowania zakresowe, czy indeks jest wystarczająco duży, aby fragmentacja miała praktyczne znaczenie, oraz czy czas operacji mieści się w dostępnych zasobach. Dla indeksów małych albo używanych głównie do wyszukiwania pojedynczych wierszy poprawa może być pomijalna. Po zmianie należy porównać czas zapytań, liczbę odczytów logicznych i plan wykonania. Przeorganizowanie nie naprawia problemów wynikających z nieprawidłowego indeksowania, błędnych warunków zapytań, niedopasowanych typów danych ani zbyt małej ilości pamięci. Nie zastępuje również analizy blokad i oczekiwań, ponieważ wolne zapytanie może wynikać z konkurencyjnych modyfikacji, a nie z fragmentacji. W środowisku produkcyjnym operację powinno się poprzedzić kopią konfiguracji, identyfikacją właściwego indeksu i obserwacją obciążenia. Przy bardzo dużej fragmentacji lub potrzebie zmiany parametrów indeksu właściwym działaniem może być przebudowa, ale jest to odrębna operacja o innym profilu zasobów i blokowania. |