Co nowego w SQL Server Profiler

Opublikowano: 28 grudnia 2006

Monitorowanie serwera i baz danych jest jednym z podstawowych zadań administratora systemu Microsoft SQL Server 2005. Monitorowanie jest nie tylko sposobem na rozwiązywanie problemów, ale prowadzone systematycznie (tzw. monitoring proaktywny) daje szansę uniknięcia owych problemów. Jednym z podstawowych narzędzi służących do monitorowania systemu Microsoft SQL Server jest Profiler.

*
Zawartość strony
WstępWstęp
Zmiany w interfejsie graficznymZmiany w interfejsie graficznym
Nowe opcje śledzeniaNowe opcje śledzenia
Nie tylko monitoring silnika baz danychNie tylko monitoring silnika baz danych
Wszechobecny XMLWszechobecny XML
Wizualizacja zakleszczeńWizualizacja zakleszczeń
Współpraca z aplikacją PerfmonWspółpraca z aplikacją Perfmon
PodsumowaniePodsumowanie

Wstęp

Najnowsza wersja Profilera dołączona do systemu Microsoft SQL Server 2005 jest wyposażona w kilka udoskonaleń i nowych funkcjonalności w porównaniu z poprzednią wersją. Celem niniejszego artykułu jest przedstawienie najważniejszych nowości w narzędziu Profiler i omówienie ich zastosowań.

Do początku stronyDo początku strony

Zmiany w interfejsie graficznym

Po uruchomieniu narzędzia przy próbie utworzenia nowego śladu (ang. trace) można zauważyć zmiany w interfejsie graficznym Profilera. W porównaniu z poprzednią wersją narzędzia, zniknęły zakładki Data Columns oraz Filters. Obie wymienione zakładki oraz zakładka Events zostały zamienione na jedną zakładkę – Events Selection. W zakładce tej administrator ma możliwość wyświetlenia listy wszystkich zdarzeń – poprzez zaznaczenie pola wyboru Show all events – oraz wyświetlenia listy wszystkich kolumn – poprzez zaznaczenie pola wyboru Show all columns. Wybór kolumn, które mają być zapisywane przez Profiler podczas śledzenia, odbywa się indywidualnie dla każdego zdarzenia, dzięki czemu plik śladu może być mniejszy. Nowy interfejs jest bardzo wygodny, wszystkie zdarzenia i przypisane im kolumny wybiera się za pomocą pól wyboru. Ustawienia dodatkowe dla kolumn, takie jak grupowania, dostępne są pod przyciskiem Organize Columns... (w poprzedniej wersji ustawień tych dokonać można było w zakładce Data Columns). Z kolei pod przyciskiem Column Filters... dostępne są opcje filtrowania zdarzeń (w poprzedniej wersji dostępne w zakładce Filters).

Nowy interfejs użytkownika przy wyborze zdarzeń i kolumn do śledzenia

Rys. 1. Nowy interfejs użytkownika przy wyborze zdarzeń i kolumn do śledzenia.

Do początku stronyDo początku strony

Nowe opcje śledzenia

Wiele nowości znajdziesz w nowym oknie General Options dostępnym w menu głównym programu pod pozycją Tools – Options... Nowe opcje umożliwiają między innymi:

wyświetlanie w wynikach śledzenia dat według formatu lokalnych ustawień,

pomiar czasu trwania zdarzenia w mikrosekundach (!),

odtwarzanie wielu plików śladów jeden po drugim, gdy nagrano ich sekwencję (tzw. rollover trace files).

Nowe okno opcji narzędzia Profiler

Rys. 2. Nowe okno opcji narzędzia Profiler.

Do początku stronyDo początku strony

Nie tylko monitoring silnika baz danych

Profiler z systemu SQL Server 2005 to nie tylko narzędzie służące do monitorowania i profilowania zdarzeń na serwerze baz OLTP (ang. Online Transactional Processing). To także aplikacja umożliwiająca monitoring zdarzeń w analitycznych bazach wielowymiarowych – OLAP (ang. Online Analytical Processing). Analysis Services to druga opcja, jaką użytkownik może wybrać w polu Server Type w oknie Connect to Server, które służy do łączenia się z poziomu Profilera do serwera baz danych. Dzięki temu można monitorować zdarzenia typowe dla środowiska analitycznego, takie jak przetwarzanie kostek czy zapytania MDX (ang. Multidimensional Expressions). Dodatkowo w menu głównym narzędzia Profiler znajduje się opcja File – Export – Export SQL Server Analysis Services Events, dzięki której można wyeksportować zapisane w pliku śledzenia polecenia odwołujące się do wielowymiarowych baz danych – MDX, DMX (ang. Data Mining Expressions), ASSL (ang. Analysis Services Scripting Language).

SQL Server Profiler - monitorowanie Analysis Services

Rys. 3. SQL Server Profiler - monitorowanie Analysis Services.

Oprócz możliwości monitorowania Analysis Services istnieje też zupełnie nowa możliwość wykorzystania narzędzia Profiler do przeglądania zdarzeń, jakie wystąpiły w czasie uruchamiania i działania pakietów SQL Server Integration Services (SSIS). Jest to możliwe, ponieważ w pakietach SSIS dodano możliwość zapisu historii zdarzeń do pliku śladu Profilera. Podczas edycji pakietu SSIS w środowisku Visual Studio należy kliknąć prawym przyciskiem myszy w zakładce Control Flow i z menu kontekstowego wybrać Logging... W oknie konfuguracji zapisu zdarzeń z listy Provider type trzeba wybrać SSIS log provider for SQL Profiler.

Zapis zdarzeń do pliku śladu Profilera w pakiecie Integration Services

Rys. 4. Zapis zdarzeń do pliku śladu Profilera w pakiecie Integration Services.

Po wybraniu zdarzeń do zapisu i wskazaniu ścieżki do docelowego pliku śladu można uruchomić pakiet. Po wykonaniu wszystkich zadań w pakiecie SSIS we wskazanej wcześniej lokalizacji znajduje się plik, który możemy przeglądać używając narzędzia Profiler, a gdzie zapisane są informacje o zdarzeniach, jakie miały miejsce podczas wykonywania pakietu. Można dzięki temu zorientować się między innymi, jakie zadania w pakiecie SSIS wykonywały się najdłużej.

Historia uruchomienia pakietu SSIS widziana w narzędziu Profiler

Rys. 5. Historia uruchomienia pakietu SSIS widziana w narzędziu Profiler.

Do początku stronyDo początku strony

Wszechobecny XML

W nowym Profilerze istnieje wiele możliwości zapisu informacji do formatu XML. Oto niektóre z nich:

możliwość zapisu całego śladu do pliku w formacie XML (plik można następnie edytować i odtwarzać na nowo w narzędziu Profiler),

możliwość zapisu planów wykonania zapytań doi plików w fomacie XML (następnie można tak zapisane plany wykonania otwierać w programie SQL Server Management Studio jako graficzne plany wykonania zapytań),

możliwość zapisu grafów zakleszczeń do plików w formacie XML (o tym przeczytasz, już za chwilę).

Do początku stronyDo początku strony

Wizualizacja zakleszczeń

Jednym z problemów występujących w bazach danych są zakleszczenia (ang. deadlocks). Jest to problem wynikający ze współbieżnego dostępu wielu użytkowników, a zarazem wielu transakcji, do danych. Zakleszczenie powstaje, gdy dwie transakcje blokują sobie wzajemnie dostęp do zasobów, w wyniku, czego jedna z transakcji jest automatycznie wycofywana przez serwer (mówimy wówczas, że transakcja padła ofiarą zakleszczenia). Jest to zjawisko niekorzystne, ponieważ każda operacja wycofywania transakcji (tzw. rollback) jest dodatkowym obciążeniem dla serwera. Drugim skutkiem niepożądanym jest fakt, że użytkownik, którego transakcja została wycofana, musi ponowić transakcję, co na ogół wiąże się z dodatkowym nakładem pracy samego użytkownika lub projektanta aplikacji, który musi zapewnić automatyczne ponowienie transakcji w przypadku zakleszczenia. Najczęstszymi przyczynami powstawania zakleszczeń są błędy programistów, którzy - po pierwsze – tworzą zbyt długie i skomplikowane transakcje i – po drugie – pisząć transakcje wykonujące podobne zadania umieszczają składnie w różnej kolejności w różnych transakcjach.

Nowym zdarzeniem, które może przechwytywać Profiler jest Deadlock Graph – graf zakleszczenia – z kategorii Locks. Dzięki temu zdarzeniu administrator monitorujący serwer może przechwycić i zapisać w formie specjalnego pliku w formacie XML (.xdl) wystąpienie zakleszczenia. Plik .xdl z przechwyconym zakleszczeniem można otwierać w narzędziu Management Studio. I co najważniejsze format ten jest wyświetlany w postaci graficznej. Pozwala to w prosty sposób wizualizować zakleszczenia. Plik .xdl stanowi niejako „dowód winy” programisty i umożliwia wyeliminowanie wad w tworzonych przez niego transakcjach. Zapis zakleszczeń do pliku można wywołać poprzez kliknięcie prawym przyciskiem na zdarzeniu zakleszczenia lub jeszcze przed uruchomieniem śledzienia (po wybraniu do monitorowania zdarzeń typu Deadlock Graph pojawia się dodatkowa zakładka Events Extraction Settings).

SQL Server Profiler – Deadlock Graph i możliwość zapisu grafu zakleszczenia

Rys. 6. SQL Server Profiler – Deadlock Graph i możliwość zapisu grafu zakleszczenia.

Do początku stronyDo początku strony

Współpraca z aplikacją Perfmon

Najwspanialszą, według mnie, nową funkcjonalnością narzędzia Profiler jest możliwość graficznej korelacji śladu nagranego w Profilerze z dziennikami liczników (ang. counter logs) z aplikacji Perfmon, podstawowego narzędzia służącego do monitorowania systemu Microsoft Windows i aplikacji z tym systemem współpracujących. W odniesieniu do monitorowania serwera baz danych, Perfmon stanowi znakomite uzupełnienie Profilera, ponieważ umożliwia monitorowanie tych aspektów działania serwera (mowa głównie o aspektach sprzętowych, takich jak obciążenie procesora, stronicowanie pamięci, kolejkowanie zapisów na dysku, itd.), których nie pozwala monitorować Profiler.

Jak to działa? Należy rozpocząć nagrywanie do pliku śladu w Profilerze i jednocześnie nagrywanie do pliku dziennika liczników w Perfmon. Po zatrzymaniu obu zapisów (należy koniecznie zatrzymać i zamknąć nagrany w Profilerze ślad!) trzeba otworzyć w Profilerze zapisany ślad, następnie w menu głównym tego narzędzia kliknąć File – Import Performance Data..., wybrać plik z zapisanym dziennikiem liczników i ... gotowe. Pojawi się okno umożliwiające wybór liczników nagranych przez Perfmon. Po dokonaniu tego wyboru Profiler zestawi w jednym oknie zdarzenia nagrane, przez Profiler oraz wykresy ilustrujące wybrane liczniki z Perfmon. Kliknięcie na dowolnym miejscu wykresu spowoduje przejście do odpowiedniego zdarzenia, dzięki czemu administrator jest w stanie odpowiedzieć na przykład na pytanie, jakie zapytanie powoduje wzrost zbyt wysokie zużycie procesora. Wykres można w intuicyjny sposób (przy użyciu ramki przeciąganej za pomocą myszy) skalować, dzięki czemu nawet nagranie z dłuższego okresu jest łatwe do analizy. Ponadto pod prawym przyciskiem myszy ukryte jest menu kontesktowe umożliwiające między innymi przejście do tego miejsca na wykresie, w którym wartość dla wybranego licznika była najmniejsza / największa.

Korelacja śladu nagranego w Profilerze z dziennikiem liczników z aplikacji Perfmon

Rys. 7. Korelacja śladu nagranego w Profilerze z dziennikiem liczników z aplikacji Perfmon.

Do początku stronyDo początku strony

Podsumowanie

Nowy SQL Server Profiler jest doskonałym narzędziem do monitorowania zdarzeń mających miejsce w systemie Microsoft SQL Server. Wszystkie udogodnienia, jakie zaimplementowali twórcy narzędzia, zmierzają do zwiększenia komfortu administratorów, by konfiguracja samego śledzenia nie stała się problemem i nie przesłaniała rzeczywistych problemów, których śledzenie jest naszym celem.

Narzędzie SQL Server Profiler, o ile używane w duecie z aplikacją Perfom i wykorzystywane zgodnie z najlepszymi praktykami, tzn. uruchamiane z maszyny klienckiej z opcją zapisu do pliku (nie do bazy danych) przy minimalnej niezbędnej liczbie monitorowanych zdarzeń i kolumn, daje ogromne możliwości i pewność, że nic nie umknie uwadze administratora.


Paweł Potasiński

Paweł Potasiński (Microsoft Certified Trainer, Asseco Business Solutions S.A.)
Programista i konsultant w firmie Asseco Business Solutions S.A., gdzie kontynuuje odkrywanie tajników systemów SQL Server. Wcześniej od roku 2000 prace głównie przy projektach aplikacji webowych i serwerach baz danych (m.in. SQL Server 7.0/2000). W latach 2003-2007 pracował jako szkoleniowiec w ABC Data Centrum Edukacyjne. Posiada certyfikaty firmy Microsoft, m.in.: MCDBA, MCSE, MCSD, MCITP i MCT.


Do początku stronyDo początku strony