Optymalizacja bazy danych

advertisement
Bazy danych
Optymalizacja bazy danych
265
266
Bazy danych
Przegląd zagadnień
Monitoring bazy
Tuning automatyczny
Podsumowanie
Laboratorium
NajwaŜniejszym kryterium, według którego uŜytkownicy oceniają
pracę administratora baz danych, jest wydajność bazy danych. Przez wydajność
bazy danych rozumieć naleŜy czas odpowiedzi serwera na zapytania
wykonywane przez uŜytkowników. Optymalnie działająca baza danych
odpowiada na zapytania w ułamkach sekund (maksymalnie w ciągu kilku
sekund przy duŜej ilości danych i złoŜonej strukturze bazy). Rozumienie
zagadnień dotyczących optymalizacji (tuningu) baz danych jest zatem kluczowe
dla administratorów.
Bazy danych
267
Monitoring bazy
Co warto monitorowac
Tworzenie planu monitoringu
Narzedzia monitoringu
NiezaleŜnie od tego, jakiego oprogramowania uŜywamy jako SZBD
i jak dobrze skonfigurowaliśmy serwer i bazy danych, dobry administrator
monitoruje na bieŜąco działanie serwera. Dobry administrator jest takŜe
świadomy istnienia potencjalnych "wąskich gardeł" systemu i zapobiega
sytuacjom, w których serwer nie spełnia załoŜonych wymagań
wydajnościowych.
268
Bazy danych
Co warto monitorować
Wskaźniki monitorowania moŜna podzielić na dwie kategorie:
wskaźniki sprzętowe oraz wskaźniki monitorujące SZBD.
Wskaźniki sprzętowe dotyczą monitorowania:
•
•
•
•
•
procesorów serwera (procentowe uŜycie procesora),
pamięci RAM (ilość wolnej pamięci, poziom stronicowania pamięci na
dyskach twardych),
interfejsów sieciowych (zuŜycie przepustowości, ilość danych
transferowanych),
zapisu / odczytu z dysków twardych,
ilości wolnego miejsca na dyskach twardych.
Wskaźniki monitorujące SZBD dotyczą monitorowania:
•
•
•
•
•
•
rozmiaru plików baz danych,
eskalacji blokad i zakleszczeń,
ilości aktywnych transakcji,
ilości aktywnych połączeń z bazami danych,
czasu wykonania zapytań do baz danych,
udanych / nieudanych prób logowania do serwera.
Tworzenie planu monitoringu
Przed przystąpieniem do monitorowania serwera musisz zaplanować,
co chcesz monitorować, jakim narzędziem i jakie są akceptowalne wartości
monitorowanych wskaźników. Musisz stworzyć podstawę pod monitoring (ang.
baseline). Podstawa ta to określenie normalnych poziomów monitorowanych
wskaźników i załoŜenie, przy jakich poziomach niezbędna jest reakcja
administratora.
Dla przykładu, jeśli zamierzasz monitorować procesor, to naleŜy załoŜyć, Ŝe
wskaźnik procentowego zuŜycia procesora nie będzie stale utrzymywał się na
poziomie powyŜej 85%. Informacje o prawidłowych poziomach wskaźników
monitorowania moŜna znaleźć w dokumentacji SZBD.
Narzędzia monitoringu
Systemy operacyjne oraz SZBD oferują szeroką gamę narzędzi do
monitorowania. Narzędzia te bardzo często uzupełniają się wzajemnie
funkcjonalnością.
Przykładem narzędzia do monitorowania serwera jest Performance Monitor
w systemie Microsoft Windows. Narzędzie to umoŜliwia monitorowanie
głównie aspektów sprzętowych funkcjonowania serwera. Microsoft SQL Server
podczas instalacji dodaje wiele nowych wskaźników do tego narzędzia, co
sprawia, Ŝe moŜna monitorować bardzo dokładnie działanie nie tylko maszyny,
ale takŜe SZBD.
Bazy danych
269
Rys. 14.1 Performance Monitor w systemie Microsoft Windows Server 2003
Microsoft SQL Server udostępnia narzędzie monitorowania - Profiler.
Narzędzie to umoŜliwia m.in. monitorowanie wykonywanych w bazach danych
zapytań, nagranie pliku ze zmonitorowanymi zdarzeniami, interakcję z danymi
zapisanymi przy pomocy Performance Minitora.
Rys.14.2 SQL Server Profiler w działaniu
270
Bazy danych
Oprócz narzędzi graficznych SZBD oferują takŜe programowe narzędzia
monitorowania operacji wykonywanych na serwerze. Przykładem takiego
mechanizmu są triggery DDL (DDL - Data Definition Language, część języka
SQL odpowiedzialna za tworzenie i modyfikowanie struktury baz danych),
dzięki którym administrator ma kontrolę nad wykonywanymi w bazach danych
operacajami zmieniającymi struktury obiektów.
Monitorowanie musi być stale prowadzone. Nigdy nie zakładaj, Ŝe nie
ma potrzeby przeglądania dziennika błędów systemu, czy
uruchamiania monitorowania sprzętu. Dobrym nawykiem jest
uruchamianie narzędzi graficznych, które mogą niepotrzebnie obciąŜać
serwer, na innym komputerze.
Bazy danych
271
Tuning automatyczny
Obiektami bazy danych, które mają bodaj największy wpływ na
optymalizację czasu wykonywania zapytań do baz danych są indeksy.
Większość indeksów tworzy sam administrator. Czasem jednak struktura bazy
jest bardzo złoŜona. Często zbyt małe doświadczenie nie pozwala
administratorowi na utworzenie funkcjonalnych indeksów.
W takich momentach warto zapoznać się z narzędziami, które oferują
producenci SZBD. Te narzędzia to automaty, które po otrzymaniu od
uŜytkownika pewnej ilości danych na temat zapytań do optymalizacji, dokonują
obliczeń i proponują nowe struktury danych, jak indeksy czy widoki.
Jak wykonać automatyczny tuning?
Aby wykonać automatyczny tuning musisz wykonać kilka kroków:
1. Przygotuj tak zwany workload, czyli zapisz najczęściej wykonywane
polecenia lub przygotuj zapis operacji wykonywanych na serwerze
przez jakiś czas (powiedzmy cały dzień zwykłego uŜywania baz
danych),
2. Uruchom narzędzie do automatycznego tuningu.
3. WskaŜ przygotowany w kroku 1 workload.
4. Ustaw opcje optymalizatora, takie jak: czas działania, stopień
optymalizacji, obiekty optymalizujące zapytania.
5. Uruchom proces optymalizacji.
6. Dokładnie prześledź propozycje narzędzia. Odrzuć propozycje, które
nie pasują do Twojej koncepcji bazy danych.
7. Zapisz skrypt z propozycjami narzędzia lub od razu przystąp do
implementacji zaproponowanych obiektów.
Pamiętaj, by kontrolować propozycje narzędzi do automatycznego
tuningu. Nic nie zastąpi wiedzy i umiejętności logicznego myślenia
człowieka. Czasem z róŜnych przyczyn (brak dostatecznie wielu
informacji, błędy programistów) propozycje mogą okazać się wręcz
absurdalne. Autorzy w czasie wielu lat pracy z róŜnymi systemami
zetknęli się juŜ z sytuacjami, gdy narzędzie proponowało utworzenie
indeksu na wszystkich kolumnach tabeli jednocześnie...
Bardziej szczegółowe informację na temat narzędzi do tuningu automatycznego
znajdziesz w laboratorium.
272
Bazy danych
Podsumowanie
Przechowywanie danych w XML
Wybieranie danych z XML
Optymalizacja wydajności baz danych to duŜe wyzwanie dla
administratorów. Zaplanowanie struktury indeksów bardzo często jest trudnym
zadaniem. Jednak podjęcie próby stworzenia indeksów w przypadku duŜych
baz danych jest inwestycją, która potrafi się zwrócić poprzez znaczny wzrost
wydajności. W ekstremalnych przypadkach czas wykonywania zapytań skraca
się z kilkudziesięciu sekund nawet do ułamków sekund.
Bazy danych
Laboratorium
273
274
Bazy danych
Monitoring
W tym ćwiczeniu przeprowadzisz monitorowanie aktywności na
serwerze baz danych przy uŜyciu dwóch narzędzi: monitora systemowego
i programu SQL Server Profiler.
Krok 1 - Uruchomienie monitora systemowego
►
►
►
Zaloguj się do maszyny wirtualnej ZBD jako uŜytkownik
Administrator z hasłem P@ssw0rd.
Kliknij Start i Uruchom....
W oknie Uruchamianie wpisz perfmon i wciśnij ENTER, aby
uruchomić monitor wydajności systemu Windows.
Rys. 14.3 Monitor systemowy
►
►
►
►
►
►
►
Po lewej stronie rozwiń opcję Dzienniki wydajności i alerty.
Po lewej stronie kliknij prawym przyciskiem myszy na opcji Dzienniki
liczników i wybierz z menu kontesktowego opcję Ustawienia nowego
dziennika....
W oknie Ustawienia nowego licznika wpisz SQL i kliknij OK.
Kliknij na przycisku Dodaj liczniki....
Kliknij Dodaj, aby dodać licznik Czas procesora (%).
Kliknij Zamknij.
Zmień wartość w polu tekstowym Interwał na 5 (aby próbkowanie
wartości liczników odbywało się co 5 sekund) i kliknij OK.
Bazy danych
275
Rys. 14.4 Dziennik liczników w monitorze systemowym
►
Na pytanie o utworzenie katalogu odpowiedz Tak. Nie zamykaj
monitora systemowego.
Monitor systemowy słuŜy na ogół do monitorowania sprzętu procesora, pamięci RAM, dysków twardych, interfejsów sieciowych.
Microsoft SQL Server dodaje do monitora systemowego swoje własne
liczniki, m.in. do monitorowania konkurencji transakcji, ilości
aktywnych połączeń, eskalacji blokad w bazach danych.
Krok 2 - Uruchomienie programu Profiler
►
►
►
►
Kliknij Start. Z grupy programów Microsoft SQL Server 2005
z folderu Performance Tools uruchom SQL Server Profiler.
W menu narzędzia Profiler (w górnej części ekranu) kliknij File - New
Trace....
Kliknij Connect.
W oknie Trace Properties w polu tekstowym Trace name wpisz
SQL, zaznacz pole wyboru Save to file, w oknie zapisywania kliknij
Zapisz i kliknij Run.
276
Bazy danych
Rys. 14.5 SQL Server Profiler w działaniu
Krok 3 - Generowanie aktywności na serwerze
►
►
►
►
►
►
Kliknij Start. Z grupy programów Microsoft SQL Server 2005
uruchom SQL Server Management Studio.
W oknie logowania kliknij Connect.
Kliknij w menu głównym programu Management Studio na File.
Kliknij Open - File.
Odszukaj plik C:\Labs\Lab03\Activity.sql i kliknij Open.
Wciśnij F5, aby uruchomić kod.
Krok 4 - Analiza aktywności
►
►
►
►
►
►
►
►
W programie SQL Server Profiler zatrzymaj uruchomione śledzenie
(klikając w górnej części ekranu przycisk STOP - czerwony kwadrat),
a następnie zamknij okno śledzenia (ale nie okno programu Profiler).
W oknie monitora systemowego klikni prawym przyciskiem myszy na
aktywnym dzienniku liczników SQL i w menu kontekstowym wybierz
Zatrzymaj. Zamknij okno monitora systemowego.
W oknie narzędzia SQL Server Profiler kliknij w menu głównym File Open - Trace File....
WskaŜ plik SQL.trc i kliknij Otwórz.
W menu głównym kliknij File - Import Performance Data....
WskaŜ plik SQL_000001.blg w katalogu C:\perflogs i kliknij Otwórz.
W oknie Performance Counters Limit Dialog zaznacz opcję
Procesor i kliknij OK.
Na wykresie, który ilustruje zuŜycie procesora zmierzone przez
monitor systemowy, wybierz maksymalny punkt. Sprawdź
w odczytach Profilera, które polecenie SQL spowodowało najwyŜsze
zuŜycie procesora.
Bazy danych
277
Automatyczny tuning
W tym ćwiczeniu przeprowadzisz próbę automatycznej optymalizacji
zapytania z ćwiczenia poprzedniego.
Do
przeprowadzenia
ćwiczenia
niezbędna
jest
tabela
Sales.SalesOrderDetailCopy, którą moŜesz stworzyć wykonując
skrypt z ćwiczenia do modułu 6.
Krok 1 - Otwarcie zapytania do optymalizacji
►
►
►
►
►
►
Zaloguj się do maszyny wirtualnej ZBD jako uŜytkownik
Administrator z hasłem P@ssw0rd.
Kliknij Start. Z grupy programów Microsoft SQL Server 2005
uruchom SQL Server Management Studio.
W oknie logowania kliknij Connect.
Kliknij w menu głównym programu Management Studio na File.
Kliknij Open - File.
Odszukaj plik C:\Labs\Lab13\Automate.sql i kliknij Open.
Krok 2 - UŜycie narzędzia Database Engine Tuning Advisor
►
Z menu głównego (górna część ekranu) wybierz Query - Analyze
Query in Database Engine Query Advisor.
Rys. 14.6 Database Engine Tuning Advisor
278
Bazy danych
►
W górnej części ekranu kliknij Start Analysis, by rozpocząć pracę
narzędzia.
Rys. 14.7 Wynik analizy i propozycje utworzenia nowych obiektów
►
►
►
Po zakończeniu procesu analizy z menu głównego wybierz Action Apply Recomendations....
W oknie Apply Recomendations upewnij się, Ŝe zaznaczona jest
opcja Apply now i kliknij Close.
Kliknij Close.
Okazuje się, Ŝe Database Engine Tuning Advisor zaproponował identyczny
indeks jak ten, który stworzyłeś w poprzednim ćwiczeniu. Dodatkowo
zaproponował stworzenie dodatkowych statystyk, które według jego wyliczeń
równieŜ zoptymalizują zapytanie.
W ramach praktyki włącz opcję statystyk wejścia / wyjścia (patrz
poprzednie ćwiczenie) i uruchom optymalizowane zapytanie.
W zakładce Messages sprawdź, ile stron skanował serwer przy
wykonywaniu zapytania po stworzeniu obiektów zaproponowanych
przez narzędzie automatycznego tuningu. Jakieś wnioski? Ilość
odczytów powinna drastycznie zmaleć. A zatem narzędzie zadziałało
poprawnie.
Narzędzia automatycznego tuningu wymagają podania odpowiedniej
ilości danych (czytaj - duŜej ilości zapytań). Wtedy jest szansa, Ŝe
kombinacja indeksów, statystyk i widoków zaproponowana przez
narzędzie, będzie optymalna dla duŜej ilości najczęściej zadawanych
zapytań.
Download