Plany konserwacji w SQL Server pozwalają nam w łatwy sposób organizować, konfigurować i planować zadania, dzięki czemu silnik bazy danych i hostowane w nim bazy danych są utrzymywane w dobrym stanie.
Plany konserwacji oferują administratorowi bazy danych możliwość skonfigurowania kluczowych zadań, takich jak indeksowanie, aktualizacje statystyk, tworzenie kopii zapasowych, czyszczenie dzienników i inne. W poprzednim artykule omówiliśmy już, jak stworzyć podstawowy plan konserwacji w celu sprawdzenia spójności bazy danych. W tym artykule przeprowadzimy instruktaż tworzenia planu konserwacji dla instancji bazy danych, która obsługuje małe bazy danych. W trakcie instruktażu wyjaśnię kluczowe wybory dokonywane na każdym kroku w kontekście instancji o umiarkowanie dużej liczbie małych bazy danych. Pomysł polega na skonfigurowaniu konserwacji tych baz danych bez konieczności robienia tego jeden po drugim. Skupienie się na małych bazach danych ma na celu uniknięcie obciążenia wydajnościowego związanego z operacjami konserwacyjnymi.
Plan konserwacji dla zadań tygodniowych
Ilustracja 1:Uruchom kreatora planu konserwacji
Uruchamiamy Kreatora planu konserwacji z Eksploratora obiektów>[Nazwa wystąpienia]>Zarządzanie>Plany konserwacji (patrz rysunek 1). Pierwsza strona kreatora zawiera przegląd zadań, które można skonfigurować. Chociaż istnieją inne sposoby wykonania tych zadań przy użyciu kodu i planowania zadań, Kreator planu konserwacji ułatwia wykonanie tego zadania w przypadku dużej liczby baz danych hostowanych na jednej instancji.
Rysunek 2:Kreator planu konserwacji
Na rysunku 3 widzimy, że SQL Server udostępnia nam pola do nazwania i opisania planu konserwacji. Wpisanie opisu planu ma sens dla celów dokumentacyjnych. Wyobraź sobie przejęcie nowej instancji SQL Server w nowej firmie. Przydałoby się, gdyby w obiektach znajdowały się opisy obiektów SQL Server. Powinieneś zrobić to samo dla innych. Proszę zauważyć, że opis, który podałem, ma po prostu zilustrować ten punkt. Bardziej szczegółowy opis będzie pożądany w środowisku produkcyjnym.
Ilustracja 3:Nazywanie planu konserwacji
Zauważ, że na rysunku 3 mamy możliwość wyboru, czy chcemy użyć jednego harmonogramu dla wszystkich zadań, czy oddzielnego harmonogramu dla każdego zadania. Zdecydowałem się na użycie oddzielnych harmonogramów, aby mieć elastyczność rozłożenia zadań. Nie chcielibyśmy, aby zbyt wiele operacji konserwacyjnych wykonywało się jednocześnie lub przez długi czas, aby uniknąć ryzyka przeciążenia zasobów serwera. Decyzja, którą podejmiesz w tym momencie, może również zależeć od pojemności dostępnych zasobów i dostępnego okresu konserwacji. Niektórzy ludzie mają wystarczającą pojemność i chcieliby szybko wykonać zadanie podczas każdego biegu. W scenariuszu opisanym w tym artykule zakładamy, że dana instancja nie jest używana w weekend.
Na rysunku 4 wybieramy zadania, które chcemy wykonać. Jedną z największych zalet SQL Server jest to, że każde zadanie jest opisane na dole okna. Opłaca się, gdy pracujesz jako DBA, aby zrozumieć, co robisz, nawet podczas pracy w „Windows”. Z mojego doświadczenia wynika, że wielu „administratorów” ma zwyczaj po prostu klikać „DALEJ, DALEJ, DALEJ”, ponieważ spieszy im się, aby funkcja działała. Ale poświęcenie czasu na zrozumienie wpływu następnego „NASTĘPNEGO” pomaga upewnić się, że robisz coś, co przyniesie wartość dodaną, a nie spowoduje nowe problemy.
Rysunek 4:Wybór zadań konserwacyjnych
Wybrane przez nas zadania są opisane w następujący sposób:
Sprawdź integralność bazy danych zadanie wykonuje wewnętrzną kontrolę spójności danych i stron indeksowych w bazie danych.
Reorganizuj indeks defragmentuje zadania i kompaktuje indeksy klastrowe i nieklastrowane w tabelach i widokach. Poprawi to wydajność skanowania indeksów.
Indeks odbudowy zadanie reorganizuje dane na stronach danych i indeksów poprzez przebudowanie indeksów. Poprawia to wydajność skanowania indeksu i wyszukiwania. To zadanie optymalizuje również dystrybucję danych i wolnego miejsca na stronach indeksu, umożliwiając szybszy rozwój w przyszłości.
Aktualizuj statystyki zapewnia, że optymalizator zapytań ma aktualne informacje o dystrybucji wartości danych w tabelach. Pozwala to optymalizatorowi na lepsze osądzanie strategii dostępu do danych.
Oczyszczanie historii zadanie usuwa dane historyczne dotyczące operacji tworzenia kopii zapasowych i przywracania, agenta SQL Server i planu konserwacji. Ten kreator pozwala określić typ i wiek danych do usunięcia.
Kopia zapasowa bazy danych (pełna) zadanie pozwala określić źródłowe bazy danych, pliki docelowe lub taśmy oraz opcje nadpisywania dla pełnej kopii zapasowej.
Czyszczenie konserwacyjne zadanie usuwa pliki pozostałe po wykonaniu planu konserwacji.
Rysunek 5 pokazuje, gdzie wybieramy kolejność wykonywania tych zadań. Jest to ważne z kilku powodów. Na przykład nie ma sensu wykonywanie aktualizacji statystyk indeksu po przebudowie indeksu, ponieważ przebudowa indeksu wykonuje również aktualizację statystyk indeksu w programie SQL Server. W dalszej części artykułu zobaczymy, jak sobie z tym poradzimy, biorąc pod uwagę wybraną przez nas kolejność. Inną możliwą kwestią jest to, że możesz zdecydować, że bardziej sensowne jest wykonanie kopii zapasowej przed przystąpieniem do niektórych rodzajów konserwacji.
Rysunek 5:Kolejność zadań
Na rysunku 6 wybieramy, do których baz danych chcemy zastosować pierwsze zadanie konserwacji. Musimy to zrobić również dla każdego z kolejnych zadań. Jest to ważne w tym sensie, że niektóre bazy danych mogą wymagać wyłączenia z takich operacji. Na przykład, gdy masz mieszankę bardzo dużych baz danych (VLDB) i bardzo małych baz danych w tej samej instancji (sam w sobie zły pomysł), może być konieczne wykluczenie baz VLDB z całkowicie ślepych przebudów indeksu. W takim przypadku należy zidentyfikować tabele kluczy w tej bazie danych VLDB i skoncentrować przebudowy i inne intensywne operacje konserwacyjne na tabelach kluczy. W tym przykładzie wykluczyłem bazy danych systemowych, ponieważ mogę dokładnie zaplanować ich konserwację osobno. Uważam, że bezpieczniej jest obsługiwać systemowe bazy danych oddzielnie, biorąc pod uwagę, że jakiekolwiek ich uszkodzenie może wpłynąć na całą instancję.
Rysunek 6:Określ zakres
Każda operacja konserwacyjna ma swój własny zestaw opcji. Rysunek 7 pokazuje opcje, na które musimy się zdecydować dla DBCC CHECKDB. Odszedłem nieco od ustawień domyślnych, zwiększając MAXDOP do 2. Na rysunku 8 postanawiamy uruchomić to zadanie o 1:00 w nocy w soboty i niedziele.
Rysunek 7:Opcje DBCC
Rysunek 8:Harmonogram DBCC
Zadanie Reorganize Index ma również określony zestaw opcji. Warto wspomnieć o zestawie warunków, które określą, czy indeks powinien zostać zreorganizowany, czy nie – fragmentacja 30%, liczba ponad 1000 stron i ostatnie użycie najwyżej 28 dni. To okno podkreśla potrzebę zrozumienia opcji, które tworzymy. Aby poprawnie wykonać te opcje, musisz zrozumieć indeksy i indeksowanie w rozsądnym zakresie. Zwróć uwagę, że podobne wybory będą musiały zostać dokonane w zadaniu Odbuduj indeks. Należy również pamiętać, że zalecany próg fragmentacji dla reorganizacji indeksu wynosi w rzeczywistości 15%, a nie 30%.
Ilustracja 9:Reorganizuj opcje indeksowania
Zadanie Odbudowa indeksu oferuje kilka innych opcji poza tymi, które dotyczą reorganizacji indeksu. (Patrz Rysunek 10). Zauważ, że wybrałem sortowanie wyników w TempDB. Aby ten wybór był skuteczny, ważne jest odpowiednie dostrojenie bazy danych TempDB, ponieważ wybór oznacza, że sortowanie dla tej operacji we WSZYSTKICH bazach danych odbędzie się w bazie danych TempDB. Dodatkowo musimy ustalić harmonogram przebudowy indeksu. Do tego zadania ustawiłem również MAXDOP na 2.
Rysunek 10:Opcje przebudowy indeksu
Wspomnieliśmy wcześniej, że gdy w SQL Server wywoływana jest przebudowa indeksu, aktualizacja statystyk indeksów jest również wywoływana domyślnie. Tak więc, gdy konfigurujemy zadanie aktualizacji statystyk, wybieramy aktualizację tylko statystyk kolumn (Rysunek 11). To okno daje nam również możliwość wykonania pełnego skanowania lub próbkowania. Ponieważ kontekstem są małe bazy danych, wybieramy opcję pełnego skanowania. Ponownie, wymaga to zrozumienia statystyk.
Rysunek 11:Zadanie aktualizacji statystyk
Zdecydowaliśmy się skonfigurować zadanie czyszczenia, aby usunąć wszelkie dane starsze niż 4 tygodnie, jak pokazano na rysunku 12.
Ilustracja 12:Zadanie czyszczenia historii
Zadanie kopii zapasowej udostępnia sporo opcji konfiguracyjnych w trzech zakładkach! Rysunek 13 pokazuje, że zdecydowaliśmy się ograniczyć to zadanie tworzenia kopii zapasowej do baz danych użytkowników. Planujemy to na 3:00 rano w niedziele, a następnie wybieramy miejsce docelowe kopii zapasowej jako E:\MSSQL\Backup (patrz Rysunek 14). W trzeciej zakładce (Rysunek 15) dokonujemy wyborów, aby zweryfikować kopię zapasową, a także wykonać sumę kontrolną, dzięki czemu jesteśmy bliżej pewności, że kopia zapasowa jest niezawodna.
Rysunek 13:Zadanie kopii zapasowej bazy danych
Ilustracja 14:Miejsce docelowe kopii zapasowej
Ilustracja 15:Opcje kopii zapasowej
Na koniec konfigurujemy zadanie, które będzie zarządzać przechowywaniem naszego dziennika planu konserwacji. (Rysunek 16). Ponownie decydujemy się usunąć wszelkie rekordy dziennika starsze niż 4 tygodnie. Rysunek 17 pokazuje opcje, które wybieramy, aby upewnić się, że działania planu konserwacji są rejestrowane, a także wysyłane do grupy administratorów bazy danych. Oczywiście, aby ta ostatnia opcja działała, musimy skonfigurować pocztę bazy danych i poprawnie skonfigurować operatory.
Rysunek 16:Zadanie czyszczenia planu konserwacji
Ilustracja 17:Opcje raportu
Rysunki 18 i 19 przedstawiają podsumowanie skonfigurowanych przez nas zadań oraz informacje zwrotne na temat pomyślnego zakończenia kreatora.
Rysunek 18:Podsumowanie opcji
Ilustracja 19:Zakończenie przez kreatora
Plan konserwacji codziennych zadań
Możemy również utworzyć oddzielne plany konserwacji do innych celów, takich jak zwykła organizacja. Nie musimy ustawiać osobnego planu dla codziennych zadań, ponieważ możemy skonfigurować harmonogramy osobno dla każdego zadania. Jednym z powodów, dla których możemy chcieć skonfigurować oddzielny plan, może być wybranie innego zestawu zadań ukierunkowanych na inny zestaw baz danych (w rzeczywistości nadal możemy to zrobić również w istniejącym planie).
W poniższym przykładzie załóżmy, że mamy inny zestaw dużych baz danych w tej samej instancji, które mają różne cele punktu odzyskiwania. Następnie musimy zastosować inną strategię tworzenia kopii zapasowych — dzienny harmonogram różnicowych kopii zapasowych i godzinowy harmonogram tworzenia kopii zapasowych dziennika transakcji, a także tygodniową pełną kopię zapasową, aby zapewnić RPO wynoszący 1 godzinę. (Patrz rysunki 21 i 22).
Ilustracja 20:Codzienny plan konserwacji zadań
Rysunek 21:Zadania kopii zapasowej różnicowej i dziennika
Ilustracja 22:Kolejność zadań planu dziennej konserwacji
W przypadku kopii zapasowej różnicowej wybieramy harmonogram dzienny, który jest uruchamiany codziennie o godzinie 2:00. (Patrz Rysunek 23). I wybierz te same opcje tworzenia kopii zapasowych, co w przypadku skonfigurowanej wcześniej pełnej cotygodniowej kopii zapasowej.
Ilustracja 23:Harmonogram dziennej konserwacji
Rysunek 24:Różnicowa lokalizacja kopii zapasowej
Rysunek 25:Różnicowe opcje tworzenia kopii zapasowych
Z drugiej strony decydujemy się na zaplanowanie tworzenia różnicowej kopii zapasowej o każdej godzinie każdego dnia. Zapewniamy również, że każdy zestaw kopii zapasowych bazy danych jest przechowywany w katalogu o własnej nazwie. Reszta kreatora jest taka sama jak w poprzednim przewodniku.
Ilustracja 26:Harmonogram tworzenia kopii zapasowych dziennika transakcji
Ilustracja 27:Lokalizacja kopii zapasowej dziennika transakcji
Ilustracja 28:Opcje tworzenia kopii zapasowej dziennika transakcji
Wniosek
Po zakończeniu działania Kreatora planu konserwacji otrzymujemy plan konserwacji i odpowiadający mu zestaw zadań agenta SQL (patrz Rysunek 29). Zasadniczo plan konserwacji jest zbiorem pakietów SSIS, a kiedy przeanalizujesz zaplanowane zadania, przekonasz się, że etap zadania wykonywany w każdym zadaniu planu podrzędnego jest pakietem SSIS (patrz Rysunek 30).
W kolejnym przykładzie pokażemy, że możemy wykonywać zadania z planu podrzędnego rocznie. Przeanalizujemy również wyniki wykonania planu konserwacji i rozwiążemy błędy związane z wykonywaniem etapów pracy. Przeanalizujemy również dziennik planu konserwacji.
Rysunek 29:Wynikowe zadania agenta SQL
Rysunek 30:Etap zadania pakietu SSIS