| Termin | Definicja |
|---|---|
| Odbudowa indeksu offline | Odbudowa indeksu offline blokuje tabelę na czas operacji, ale przebiega szybciej i mniej obciąża dziennik niż wariant online. Na czym polega odbudowa indeksu offlineOdbudowa indeksu offline polega na utworzeniu uporządkowanej, nowej struktury indeksu na podstawie danych znajdujących się w tabeli, a następnie zastąpieniu nią dotychczasowego indeksu. Operacja porządkuje strony danych indeksu, usuwa niepotrzebne puste miejsce i może zmniejszyć fragmentację logiczną. Fragmentacja występuje wtedy, gdy kolejność stron indeksu na dysku nie odpowiada kolejności kluczy indeksu albo gdy strony są zapełnione w sposób utrudniający wydajne odczytywanie zakresów danych. Określenie „offline” oznacza, że podczas zasadniczej części operacji tabela lub powiązana struktura indeksu jest blokowana dla czynności, które mogłyby zmienić jej zawartość. W praktyce użytkownicy i aplikacje mogą nie mieć możliwości wykonywania odczytów albo zapisów dotyczących tej tabeli przez cały czas trwania odbudowy lub przez jej istotną część. Dokładny zakres blokad zależy od silnika bazy danych, rodzaju indeksu, poziomu izolacji transakcji oraz ustawień wykonania operacji. Blokady i wpływ na dostęp do danychNajważniejszą konsekwencją wariantu offline jest czasowa niedostępność tabeli dla współbieżnych operacji. Jeżeli aplikacja próbuje zmodyfikować rekordy objęte odbudową, jej żądanie może zostać wstrzymane do czasu zwolnienia blokady. Podobnie może zachować się zapytanie odczytujące dane, jeżeli plan wykonania wymaga dostępu do obiektu objętego blokadą. Długotrwałe oczekiwanie może powodować przekroczenie limitu czasu po stronie aplikacji, narastanie kolejki sesji oraz wtórne blokowanie innych obiektów. Przed rozpoczęciem operacji trzeba więc uwzględnić aktywność użytkowników, zadania cykliczne, importy, eksporty i procesy wykonujące zapisy do tabeli. Odbudowa przeprowadzona w okresie małego obciążenia ogranicza ryzyko zakłóceń, ale nie usuwa go całkowicie. Znaczenie ma także rozmiar tabeli, liczba poziomów indeksu, szybkość podsystemu dyskowego i dostępna przestrzeń robocza. Utworzenie nowej struktury może wymagać dodatkowego miejsca na dysku, a jego brak może przerwać operację lub uniemożliwić jej rozpoczęcie. Dziennik transakcyjny i zużycie zasobówOdbudowa indeksu offline zwykle wykonuje pracę w sposób bardziej zwarty niż utrzymywanie indeksu online podczas równoczesnych zmian danych. Dzięki temu operacja może zakończyć się szybciej i generować mniejsze obciążenie dziennika transakcyjnego niż wariant online, jednak nie oznacza to braku wpisów w dzienniku. Zmiany związane z przebudową muszą być rejestrowane zgodnie z mechanizmem trwałości i odtwarzania stosowanym przez konkretny silnik bazy danych. W czasie odbudowy zużywane są między innymi procesor, pamięć operacyjna, przepustowość dysku i miejsce tymczasowe. Intensywne odczyty tabeli oraz zapisy nowej struktury mogą konkurować z normalnym ruchem aplikacji. Po zakończeniu operacji może być potrzebne wykonanie kopii zapasowej dziennika, jeżeli środowisko korzysta z modelu odzyskiwania wymagającego regularnego zarządzania jego rozmiarem. Warto obserwować postęp zadania, oczekiwania blokad, wolne miejsce oraz rozmiar dziennika, ponieważ sama informacja o rozpoczęciu odbudowy nie pokazuje jej rzeczywistego wpływu na system. Planowanie i weryfikacja zakończonej operacjiDecyzja o odbudowie offline powinna wynikać z obserwacji fragmentacji, czasu wykonywania zapytań i charakterystyki obciążenia, a nie wyłącznie z wieku indeksu. Fragmentacja nie zawsze powoduje istotne spowolnienie: jej znaczenie zależy od tego, czy zapytania wykonują skanowania zakresów, jak duży jest indeks i czy dane są odczytywane z dysku. Przed zabiegiem należy ustalić okno serwisowe, sprawdzić zależności aplikacyjne oraz przewidzieć możliwość anulowania lub odtworzenia operacji w razie problemu. Po odbudowie należy potwierdzić, że indeks ma oczekiwany stan, tabela jest ponownie dostępna, a aplikacja poprawnie realizuje odczyty i zapisy. Trzeba również sprawdzić komunikaty silnika, czas trwania zadania, ewentualne błędy oraz zmianę wykorzystania przestrzeni dyskowej. Sama odbudowa indeksu nie naprawia błędnego projektu zapytania, nie zastępuje aktualizacji statystyk, nie zwiększa automatycznie wydajności każdego polecenia i nie rozwiązuje problemów wynikających z niewłaściwych typów danych lub braku odpowiednich indeksów. Diagnostyka powinna więc obejmować zarówno stan indeksu, jak i plan wykonania oraz zachowanie całej aplikacji po zakończeniu prac. |