Menu
Jest wolny
Zameldować się
główny  /  Instalacja i konfiguracja / Korzystanie z monitora aktywności SQL Server. Korzystanie z monitora wydajności w celu określenia wąskich wąskich sprzętu, na którym serwer SQL działa najlepsze narzędzia do monitorowania serwera MS SQL

Korzystanie z monitora aktywności SQL Server. Korzystanie z monitora wydajności w celu określenia wąskich wąskich sprzętu, na którym serwer SQL działa najlepsze narzędzia do monitorowania serwera MS SQL

Każdy administrator bazy danych, musiał na pewno radzić sobie z faktem, że wszystko działa powoli, lub w ogóle nie pracuje. Pierwszą rzeczą, którą musisz się dowiedzieć, jest to, że w ogóle nastąpi na serwerze SQL w tej chwili. Wydawałoby się w arsenale administratora tak wiele wszystkich użytecznych elementów: monitor aktywności BUVA, wiązkę z procedurami zarządzania dynamicznego (DMV), SP_WHO i SP_WHO2, które pozostały odziedziczone od SQL Server 7 i SQL Server 2000.
Ale zobaczmy ...

Narzędzia monitorujące

Monitor aktywności
Wydaje się, że wspaniała rzecz jest zaangażowana w fakt, że jest to konieczne - działanie jest monitorowane. Uruchamiam ciężki raport księgowy i zobacz, jaki monitor aktywności mi pokaże.
Na monitorze aktywności zrzutu ekranu z SQL Server 2005:

Oraz z SQL Server Denali (2012) CTP 3.


M-Tak. A jeśli kilkanaście osób uruchomi takie raporty? I to nie jest rzadkie ... Będzie dość niewygodne zrozumienie, choć oczywiście postępy na twarzy. W monitorze aktywności Denali pokazuje znacznie bardziej przydatne informacje (na przykład, na tym, co się dzieje, co się dzieje), plus, możemy, na przykład, dla pożądanej sesji, uruchomiliśmy profil bezpośrednio z monitora i śledzić go już w Profiler, ale uszkadzaj go, dodatkowo ładuje się i ładuje, a bez załadowanego serwera. Ponadto istnieje już problem z hamulcami, a te prośby, które w momencie rozpoczęcia profilera już zaczęły być wykonane, nie zobaczymy.
I chcę to zobaczyć - kim i co to teraz robi.

sP_WHO i SP_WHO2.
W zrzucie zrzutu ekranu wynik realizacji SP_WHO (z góry) i SP_WHO2 (na dole) wykonano podczas budowy całego raportu złagodzenia:


Tak. Bardzo informujące. Patrząc na sp_who możemy zobaczyć tylko, co coś biegnie. Oczywiście jest wykonywany - jesteśmy dla niej i widzimy, i widzimy, że niektóre wybrane są wykonywane. Lub kilka wybierz "OV. Świetny.
SP_WHO2 pokazuje więcej informacji. Teraz możemy zobaczyć, ile czasu procesora spędził sesję (a kolumna złożona całkowity czas, najwyraźniej), liczba operacji we / wy, nazwa bazy danych, w której wszystko jest wykonywane i kto jest zablokowany przez tę sesję ( Jeśli zostanie zablokowany).
Monitor aktywności, jak widzimy, daje więcej informacji.
DMV.
Począwszy od SQL Server 2005, otrzymaliśmy nową okazję do otrzymania informacji o stanie serwera - dynamiczne widoki zarządzania. MSDN mówi: "Dynamiczne widoki administracyjne i funkcje zwracają dane stanu danych, które można wykorzystać do monitorowania zdrowia instancji serwera, diagnostyki problemów i ustawień wydajności".
I rzeczywiście, w 2005 roku SQL Server "E Istnieje zestaw poglądów związanych z realizacją żądań w obecnym momencie (jednak istnieje również występy, aby wyświetlić" historię "): Tutaj są. I ich liczba, Wersja do wersji nadal wzrasta!
Z pewnością administratorzy Mastyczny mają wiele skryptów, umożliwiając uzyskanie informacji o aktualnym stanie serwera, ale co robić, jeśli doświadczenie pracy z DMV jeszcze nie jest, ale są już problemy?

sp_wwoisaktywne.

Adam Machanic (SQL Server MVP i MCITP) opracowała i stale skromuje procedurę składowaną sp_wist, która opiera się tylko na tych większości DMV i cholera, jest łatwa w użyciu. Pobierz najnowszą wersję sp_wwaktywnej. W Adam jest seria artykułów dedykowanych do sp_wwaktywnej, składającej się z 30 (trzydzieści!) Kawałki, możesz go przeczytać, a spróbuję cię zainteresować w czytaniu tego materiału :).
Załóżmy więc, że pobrałeś i uruchomiłeś ten skrypt na jednym z serwerów testowych (w dowolnej wersji, począwszy od 2005 r. I kończąc się Denali). Adam doradza, aby przechowywać go w bazie danych Master System, dzięki czemu można go wywołać w kontekście dowolnej bazy danych, ale nie jest to konieczne, tylko podczas dzwonienia do niego w kontekście innej bazy danych, musisz najpierw napisać nazwę - BD. Sham.sp_wwhoisaktywne.
Więc spróbuj. W zrzucie zrzutu ekranu wynikiem jego wykonania podczas budowy całego tego samego raportu:

Wynik prośby Exec Sp_Whoisactive, niestety nie istnieje na jeden ekran, więc opis tekstu wyjścia procedury przechowywanej spowodowaną bez parametrów.
  • - W przypadku aktywnego zapytania czas wykonywania pokazuje na sesję "Spanie" - czas "snu";
  • - Właściwie spid;
  • - Pokazuje teraz tekst, który jest obecnie wykonany lub tekst ostatniego wykonanego zapytania, jeśli sesja śpi;
  • - Cóż, zrozumiałeś;
  • - Bardzo ciekawa kolumna. Jest wyświetlany w formacie (AX: BMS / CMS / DMS) E. A jest liczbą zadań oczekiwania na zasobach E. B / C / D - jest to czas oczekiwania w milisekundach. Jeśli zasób spodziewa się tylko jednej sesji (jak w zrzucie zrzutu), jego czas oczekiwania zostanie pokazany, jeśli 2 sesje są ich czasami oczekiwania w formacie B / C. Jeśli oczekujesz 3 lub więcej - zobaczymy minimalny, średni i maksymalny czas oczekiwania na ten zasób w formacie b / c / d;
  • - W przypadku aktywnego zapytania - całkowity czas procesora, wydany przez tę prośbę, na sesję snu - całkowity czas procesora na "całe życie" tej sesji;
  • - W przypadku aktywnego zapytania jest to liczba operacji nagrywania w tempdb podczas wykonywania zapytania; W przypadku sesji spania - łączna liczba wpisów w tempdb dla całego życia sesji;
  • - W przypadku aktywnego zapytania - liczba stron w TEMPDB przeznaczono na ten wniosek; Dla sesji spania - całkowita liczba stron w tempdb przydzielona przez cały okres życia sesji;
  • - Jeśli nagle jesteśmy zablokowani przez kogoś, SPID (session_id) pokaże, kim jesteśmy zablokowani;
  • - dla aktywnego zapytania - liczba odczytów logicznych wykonanych podczas wykonywania tego żądania; Dla sesji snu - liczba odczytu stron dla całego życia tej sesji;
  • - wszystko to samo, ale o rekordzie;
  • - dla aktywnego zapytania - liczba odczytów fizycznych wykonanych podczas wykonywania tego żądania; Dla sesji spania - tradycyjnie całkowitą liczbę odczytów fizycznych na całe życie sesji;
  • - W przypadku aktywnego zapytania - liczba stron ośmiokolobyt używana w wykonywaniu tego żądania; Dla sesji spania - ile minut stron pamięci zostały podświetlone dla całego jej życia;
  • - Status sesji jest wykonywany, śpi itp.;
  • - Pokazuje liczbę transakcji otwartej tej sesji;
  • - pokazuje, czy istnieje taka szansa, proces działania operacji (na przykład, tworzenie kopii zapasowych, przywracania), nigdy nie pokazuj, ile procent jest wykonywane według wyboru.
Pozostałe kolumny B. standardowe wyjście Sp_wwhoisactive wygląda interesujące, a ja ich nie opiszę - ich celu, myślę, że jest zrozumiałe dla wszystkich (nazwę hosta, nazwa bazy danych, program_name, start_time, login_time, prośba_id, kolekcja_time).

I co? To wszystko?

Nie, to nie wszystko. Opowiadam ci także o tym, co (najciekawsze i przydatne, z mojego punktu widzenia) parametry można nazwać SP_WHOISCACTIVE i co będzie działać.
  • @Help jest strasznym użytecznym parametrem. Podczas dzwonienia sp_wwaktywne @Help \u003d 1 uzyskujemy informacje o wszystkich parametrach i kolumnach wyjściowych na ekranie. Więc jeśli coś pozostaje niezrozumiałe, zawsze możesz oglądać "pomoc"
  • @Filter_type i @filter - Pozwól, aby filtrować wynik wykonania. @Filter_type może zaakceptować "sesję", "program", "baza danych", "login" i "host". W parametrze określamy, który przedmiot wybranego typu jest zainteresowany nas. Na przykład, chcemy zobaczyć wszystkie sesje działające w bazie danych Master, dla tego nazywamy Exec Sp_Whoisactive @Filter_type \u003d "baza danych", \u003d "Master". Parametr jest dopuszczalny do użycia "%";
  • @not_filter_type i @Not_filter - Pozwól nam filtrować "Wręcz przeciwnie". Te, na przykład, chcemy zobaczyć wszystko, z wyjątkiem tych sesji, które w polu bazy danych stoi "Master", abyśmy wykonywać Exec Sp_Whoisactive @Not_Filter_type \u003d "bazy danych", @not_filter \u003d "Master". Cóż, będziemy chcieli zobaczyć, że wszyscy użytkownicy mogą być ustawione. Parametr @not_filter jest dopuszczalny do użycia "%";
  • @show_system_spids \u003d 1 - pokaże informacje o sesjach systemowych;
  • @Get_Full_inner_text \u003d 1 - W polu SQL_Text nie będzie to nie tylko tekst bieżącego żądania (swetent) w opakowaniu (Batche), a tekst całego dozownika jest całkowicie;
  • @Get_plans - Dodaj do kolumny wyjściowej z planami wykonania zapytania;
  • @Get_transaction_info \u003d 1 - dodaje do wyjścia i objętości rekordów do dzienników transakcji, a także rozpoczęcie ostatniej transakcji;
  • @Get_locks \u003d 1 - zwiększa informacje o wyjściu Informacje o wszystkich blokadach narzucanych podczas wykonywania zapytania;
  • @find_block_leaders \u003d 1 - będzie podążać za łańcuchem blokady i pokaż całkowitą liczbę sesji, które czekają na odblokowanie bieżącej sesji;
  • @Output_Column_list \u003d "[%]" - Co jeśli nie chcesz zobaczyć informacji o tempdb w wyjściu sp_wwaktywnego? W tym parametrze możesz kontrolować fakt, który wyświetla;
  • @Destination_table \u003d "table_name" - spróbuje wstawić wynik wykonania, aby zapisać do tabeli, ale czy ta tabela nie sprawdzi, czy wystarczy do niego wstawić.

Teraz wszyscy

W rezultacie mamy kolejne niezwykle wygodne i elastyczne narzędzie do śledzenia bieżącej aktywności na SQL Server. W normalnej pracy jest to dość wystarczające do rozwiązania stanu serwera widoku i prawa do odwołania do DMV.
Warto również dodać, w przypadku, gdy możliwe jest połączenie tylko z serwerem

Lista problemów z kontrolą wydajności

Wpisz swoje wyniki w powyższej tabeli.

Korzystanie z monitora wydajności (monitor wydajności), aby zidentyfikować wąskie pojazdy sprzętowe SQL Server

Najlepiej rozpocząć kontrolę wydajności serwera SQL z monitora wydajności (monitor systemu). Monitorowanie kilku głównych liczników przez okres 24 godzin pozwoli ci uzyskać całkiem dobry pomysł na jakiekolwiek główne problemy ze sprzętem, które wpływają na wydajność SQL Server.

Idealnie, musisz użyć monitora wydajności, aby utworzyć plik do odczytu licznika kluczy przez okres 24 godzin. Musisz wybrać "typowy" 24-godzinny okres, aby utworzyć plik rejestracyjny. Na przykład wybierz typowy dzień roboczy, a nie koniec tygodnia lub wakacje.

Gdy tylko nagrywałeś dane monitora wydajności w ciągu 24 godzin w pliku rejestracyjnym, wyświetlić zalecane liczniki w trybie wykresu monitora wydajności, a następnie zapisz średnie, minimalne i maksymalne wartości w powyższej tabeli. Po jego wykonaniu porównuj wyniki z wynikami następujących analizy. Porównanie to daje możliwość określenia jakichkolwiek potencjalnych gardeł sprzętu, które wpływają na serwer SQL.

Jak interpretować liczniki monitorów kluczy

Poniżej omówiono liczniki podstawowych monitorów wydajności, ich zalecane wartości i niektóre opcje, które powinny pomóc w identyfikacji i rozwiązaniu problemów sprzętowych. Należy zauważyć, że rozważałem liczbę liczników monitorów wydajności. Odbywa się to, ponieważ cel tego artykułu jest odkrycie prostych i oczywistych problemów utraty wydajności. Dyskusja wielu innych liczników monitorów wydajności można znaleźć w innym miejscu na tej stronie.

Pamięć: strony / sekundy

Miernik ten mierzy liczbę stron na sekundę, które są resetowane z pamięci RAM do dysku lub są odczytywane w pamięci RAM z dysku. Im bardziej intensywnie strony, większe obciążenie operacji we / wy jest doświadczane przez serwer, który z kolei może niekorzystnie wpływać na wydajność SQL Server. Twoim celem jest próba zmniejszenia stron do minimum bez wyeliminowania go.

W ramach założenia, że \u200b\u200bSQL Server jest jedynym głównym aplikacją działającym na serwerze, numer ten musi być idealnie w przedziale między zero do 20. Jest bardzo prawdopodobne, że będziesz przestrzegać znacząco przekraczania emisji 20, co jest dość normalne. Najważniejszą rzeczą jest utrzymanie przeciętnej udostępniania strony na sekundę mniejszą niż 20.

Jeśli serwer pokazuje średnio ponad 20 stron na sekundę, jednym z najbardziej prawdopodobnych powodów jest brak niezbędnych pamięci RAM. Ogólnie rzecz biorąc, tym więcej elementu RAM jest, tym mniejsze operacje wymiany stron powinny być wykonane.

W większości przypadków na serwerze fizycznym specjalizującym się pod serwerem SQL, z odpowiednią ilością pamięci RAM, średnia wartość udostępniania strony będzie mniejsza niż 20. Odpowiednia liczba pamięci RAM dla serwera SQL można zdefiniować zgodnie z następującym kryterium: serwer Musi mieć udany współczynnik pamięci podręcznej bufora (współczynnik pamięci podręcznej Bufora) 99% i więcej. Ten miernik jest opisany poniżej w tym artykule. Jeśli masz SQL Server, który ma wartość 99% lub więcej w ciągu 24 godzin, ale otrzymujesz przeciętną stronę udostępnianie więcej niż 20 na ten sam okres, może wskazywać, że pracujesz i inni. Wnioski o fizyczne Serwer oprócz SQL Server. Jeśli tak jest, najlepiej, musisz usunąć te aplikacje, umożliwiając SQL Server jako jedyną główną aplikacją na serwerze fizycznym.

Jeśli serwer SQL nie wykonuje żadnych innych aplikacji, a wymiana stron przekracza 20 średnio w ciągu 24 godzin, może to oznaczać, że zmieniono ustawienia pamięci SQL Server. SQL Server musi być skonfigurowany tak, że ustawiono opcję "Dynamicznie Skonfiguruj pamięć SQL Server Server" (dynamicznie konfiguracja pamięci SQL Server), a maksymalna instalacja pamięci musi być w największej wartości. W przypadku optymalnej pracy SQL Server musi mieć możliwość wykorzystania tak wielu pamięci RAM, ponieważ jest to wymagane dla jego własnych potrzeb, bez przeżywania potrzeby konkurowania o szybką pamięć z innymi aplikacjami.

Pamięć: Dostępna przestrzeń

Innym sposobem, aby dowiedzieć się, czy Twój serwer SQL ma wystarczającą ilość pamięci fizycznej, jest sprawdzenie obiektu pamięci: dostępne bajty. Jego wartość musi mieć więcej niż 5 MB. W przeciwnym razie serwer SQL wymaga większej liczby pamięci fizycznej. Na serwerze wyspecjalizowanym na serwerze SQL ten ostatni próbuje utrzymać z bezpłatnej pamięci fizycznej 4-10 MB. Pozostała fizyczna pamięć RAM jest używana przez system operacyjny i SQL Server. Gdy ilość dostępnej pamięci znajduje się blisko 5 MB lub niższa, najprawdopodobniej jest to, że SQL Server doświadcza przeciążenia z powodu braku pamięci. Jeśli tak jest, należy zwiększyć liczbę fizycznych pamięci RAM na serwerze, zmniejsz ładunek na serwerze lub zmienić ustawienia konfiguracji odpowiednio konfiguracji pamięci serwera SQL Server.

Dysk fizyczny: czas na dysku

Ten licznik pokazuje, jak zajęty jest fizyczna tablica dysku (nie jest sekcja logiczna lub oddzielny dysk w tablicy). Zapewnia dobrą względną miarę, w jaki sposób jest zajęty macierzy dyskowe.

Jako zasadę empiryczną, licznik czasu dysku powinien pokazać mniej niż 55%. Jeśli odczyty licznika przekraczają 55% w ciągu ostatnich okresów (ponad 10 minut na 24 godziny monitorowania), a serwer SQL może wystąpić problemy z operacjach we / wy. Jeśli obserwujesz to zachowanie tylko od czasu do czasu w ciągu 24 godzin monitorowania, nie martwiłbym zbyt wiele, ale jeśli się często stało się (powiedzmy, kilka razy na godzinę), zacząłbym szukać sposobów zwiększenia wydajności I / O Operacje na serwerze lub zmniejsz ładowanie serwera. Niektóre sposoby zwiększenia wejścia / wyjścia dysku składają się z dodawania nowych dysków do tablicy (jeśli to możliwe), zastępując dyski do szybszego, dodawanie pamięci podręcznej na płycie kontrolerowej (jeśli to możliwe), przy użyciu różnych wersji RAID lub instalacji szybszego sterownika.

Przed użyciem tego miernika pod nt 4.0 musisz ręcznie włączyć, wprowadzając następujące informacje: "DiskPerf-Y" w wierszu polecenia. Po tym musisz ponownie uruchomić serwer. W ten sposób wymagane jest natychmiastowe zawieranie liczników dysku w systemie Windows NT 4.0. Jeśli pracujesz pod Windows 2000, ten licznik jest domyślnie włączony.

Dysk fizyczny: Średnia długość kolejki dysku

Oprócz obserwacji wartości miernika, "dysk fizyczny: czas pracy dysku", jest również pożądane, aby monitorować wartości środkowej długości kolejki dysku (AVG. Długość kolejki dysku). Jeśli ta wartość przekracza wartość 2 w przypadku ciągłych okresów (ponad 10 minut podczas 24-godzinnego monitorowania) dla każdego napędu w tablicy, ta macierz może okazać się wąskim wąskim wydajności systemu. Podobnie jak licznik czasu napędu, jeśli wystąpi czasami ponad 24 godziny okresu monitorowania, nie martwiłbym się wiele, ale jeśli często się dzieje, zacząłbym szukać sposobów zwiększenia wydajności systemu wejścia / wyjścia serwera, jak opisano powyżej.

Musisz obliczyć ten wskaźnik, ponieważ monitor wydajności nie wie, ile dysków fizycznych jest w twojej tablicy. Na przykład, jeśli masz tablicę 6 dysków fizycznych, a średnia długość kolejki wynosi 10 dla tej tablicy, a rzeczywistą średnią wartością kolejki dysku dla każdego dysku wynosi 1,66 (10/6 \u003d 1,66), co jest dobrze dopasowane do zalecanego wskaźnika 2 na jeden dysk fizyczny.

Przed użyciem tego miernika pod NT 4.0 nie zapomnij ręcznie włączyć go, wpisując na zaproszenie do wprowadzenia poleceń NT, następujący: "DiskPerf-Y" z kolejnym ponownym uruchomieniem serwera. Dlatego musisz uwzględnić liczniki dysku natychmiast po zainstalowaniu systemu Windows NT 4.0. Jeśli używasz systemu Windows 2000, ten licznik zostanie domyślnie włączony.

Użyj zarówno metra opisanego powyżej, aby dowiedzieć się, czy serwer przeżywa problemy z systemem we / wy. Na przykład, jeśli widzisz wiele okresów czasu, podczas którego czas na dysku jest więcej niż 55%, a gdy średnia długość kolejki dysku jest więcej niż 2 na dysk fizyczny, możesz mieć pewność, że serwer ma problemy z systemem wejściowym.

Procesor: czas procesora%

Obiekt procesora:% miernik czasu procesora jest dostępny dla każdego centralnego procesora i ocenia użycie każdego pojedynczego procesora. Podobny miernik jest również dostępny dla całej całej całości procesorów centralnych (suma). Jest to kluczowy licznik do śledzenia korzystania z centralnego procesora. Jeśli całkowity czas ładowania procesora na tym mierniku przekracza 80% w ciągu ciągłych okresów (ponad 10 minut przez 24 godziny monitorowania), możesz rozważyć centralny procesor z wąskim systemem. Jeśli czasami pojawią się te okresy silnego obciążenia, a wierzysz, że możesz go zaakceptować, to wszystko jest w porządku. Ale jeśli często pojawią się, należy rozważyć takie opcje zmniejszenia ładowania serwera, jako przejęcie szybszego centralnego procesorów, instalacji bardziej centralnych procesorów lub nabycie procesorów centralnych, które mają większy wbudowany pamięć podręczną drugiego poziomu ( L2).

System: Długość kolejki procesora

Wraz z licznikiem czasu procesora należy również kontrolować licznik długości kolejek (długość kolejki procesora). Jeśli ten wskaźnik przekroczy wartość 2 do jednego centralnego procesora w okresach ciągłych (ponad 10 minut w okresie monitorowania 24-godzinnego), jest prawdopodobne, że jest to wąski system systemu. Na przykład, jeśli masz 4 centralne procesory na serwerze, długość kolejki procesora nie powinna przekraczać całkowitej wartości 8.

Jeśli długość kolejki procesora regularnie przekracza zalecane maksimum, ale użycie centralnego procesora nie jest tak wysoki (który jest typowy przypadek), a następnie rozważ możliwość zmniejszenia wartości parametru konfiguracji SQL Server Server "Max Pracownik" ( Maksymalna liczba wątków). Możliwą przyczyną wysokiej wartości długości kolejki procesora jest obecność nadmiernej liczby pracowników, którzy czeka na swoją turę. Zmniejszając ich numer, który wykonujesz z tym parametrem, siły używać szczepów wątków (jeśli nie ma miejsca), ani zwiększyć jego roli.

Używaj obu opisanych metrów, aby określić dokładnie, czy istnieją problemy z centralnym procesorem. Jeśli oba wskaźniki przekraczają zalecane wartości w tych samych ciągłych okresach czasu, możesz mieć pewność, że procesor centralny jest słabym punktem systemu.

Bufor SQL Server: Udany współczynnik dostępu do pamięci podręcznej bufora

Ten miernik (Bufor SQL Server: współczynnik hit pamięci podręcznej bufora) pokazuje, jak często serwer SQL odnosi się do bufora, a nie do dysku twardego, aby uzyskać dane. W zastosowaniach OLTP współczynnik ten musi przekroczyć 90% i idealnie wynosić powyżej 99%. Jeśli współczynnik udanego kontaktu z pamięcią podręczną buforowej wynosi poniżej 90%, powinieneś iść i kupić więcej pamięci RAM już dziś. Jeśli ten współczynnik spoczywa w zakresie od 90% do 99%, powinieneś poważnie rozważyć opcję zakupu dodatkowej pamięci RAM, ponieważ bliższy podchodzi do 99%, tym szybszy serwer SQL będzie działał. W niektórych przypadkach, jeśli baza danych jest bardzo duża, nie będziesz w stanie zbliżyć się do 99%, nawet jeśli umieścisz maksymalną dopuszczalną liczbę pamięci RAM na serwerze. Wtedy wszystko, co możesz zrobić, to dodać pamięć do maksimum i zaakceptować istniejącą pozycję rzeczy.

W zastosowaniach OLAP współczynnik może być znacznie mniejszy ze względu na charakter tej aplikacji OLAP. W każdym przypadku wzrost pamięci RAM musi przyspieszyć działanie SQL Server.

SQL Server: Custom Connections

Ponieważ liczba użytkowników SQL Server wpływa na jego wydajność, zaleca się monitorowanie połączeń niestandardowych (obiekt statystyki ogólnej SQL Server: licznik połączeń użytkownika). Pokazuje liczbę połączeń użytkownika, a nie liczba użytkowników, które są w tej chwili podłączone do SQL Server.

Jeśli odczyty tego licznika przekraczają 255, należy zwiększyć wartość parametru konfiguracyjnego "Maksymalne wątki" (maksymalna liczba wątków pracy), której wartość domyślna jest 255. Jeśli liczba połączeń przekracza istniejącą liczbę Wątki robocze, serwer SQL rozpocznie udostępnianie wątków roboczych, co może wpływać na wydajność. Ustawianie tego parametru powinien być wyższy niż maksymalna liczba połączeń, które można osiągnąć na serwerze.

Co dalej

Chociaż istnieje znacznie większą liczbę liczników niż te, które uważali, że te ostatnie są kluczem do monitorowania, który jest wykonywany w procesie wykonania audytu. Po zakończeniu analizy monitorowania wydajności użyj zaleceń podanych, a następnie w tej serii artykułów, aby dokonać niezbędnych zmian, które sprawiają, że serwer SQL będzie działać, jak powinien.

Każdy administrator bazy danych, musiał na pewno radzić sobie z faktem, że wszystko działa powoli, lub w ogóle nie pracuje. Pierwszą rzeczą, którą musisz się dowiedzieć, jest to, że w ogóle nastąpi na serwerze SQL w tej chwili. Wydawałoby się w arsenale administratora tak wiele wszystkich użytecznych elementów: monitor aktywności BUVA, wiązkę z procedurami zarządzania dynamicznego (DMV), SP_WHO i SP_WHO2, które pozostały odziedziczone od SQL Server 7 i SQL Server 2000.
Ale zobaczmy ...

Narzędzia monitorujące

Monitor aktywności

Wydaje się, że wspaniała rzecz jest zaangażowana w fakt, że jest to konieczne - działanie jest monitorowane. Uruchamiam ciężki raport księgowy i zobacz, jaki monitor aktywności mi pokaże.
Na monitorze aktywności zrzutu ekranu z SQL Server 2005:

oraz z SQL Server Denali (2012) CTP 3.


M-Tak. A jeśli kilkanaście osób uruchomi takie raporty? I to nie jest rzadkie ... Będzie dość niewygodne zrozumienie, choć oczywiście postępy na twarzy. W monitorze aktywności Denali pokazuje znacznie bardziej przydatne informacje (na przykład, na tym, co się dzieje, co się dzieje), plus, możemy, na przykład, dla pożądanej sesji, uruchomiliśmy profil bezpośrednio z monitora i śledzić go już w Profiler, ale uszkadzaj go, dodatkowo ładuje się i ładuje, a bez załadowanego serwera. Ponadto istnieje już problem z hamulcami, a te prośby, które w momencie rozpoczęcia profilera już zaczęły być wykonane, nie zobaczymy.
I chcę to zobaczyć - kim i co to teraz robi.

sP_WHO i SP_WHO2.

W zrzucie zrzutu ekranu wynik realizacji SP_WHO (z góry) i SP_WHO2 (na dole) wykonano podczas budowy całego raportu złagodzenia:


Tak. Bardzo informujące. Patrząc na sp_who możemy zobaczyć tylko, co coś biegnie. Oczywiście jest wykonywany - jesteśmy dla niej i widzimy, i widzimy, że niektóre wybrane są wykonywane. Lub kilka wybierz "OV. Świetny.
sP_WHO2 pokazuje więcej informacji. Teraz możemy zobaczyć, ile czasu procesora spędził sesję (a kolumna złożona całkowity czas, najwyraźniej), liczba operacji we / wy, nazwa bazy danych, w której wszystko jest wykonywane i kto jest zablokowany przez tę sesję ( Jeśli zostanie zablokowany).
Monitor aktywności, jak widzimy, daje więcej informacji.

DMV.

Począwszy od SQL Server 2005, otrzymaliśmy nową okazję do otrzymania informacji o stanie serwera - dynamiczne widoki zarządzania. MSDN mówi: "Dynamiczne przedstawicielstwa administracyjne i funkcje Dane statusu serwera zwrotnego, które można wykorzystać do sterowania zdrowiu instancji serwera, diagnostyki problemów i ustawień wydajności".
I rzeczywiście, w 2005 roku SQL Server "E znajduje się zestaw poglądów związanych z realizacją żądań w bieżącym momencie (jednak, aby zobaczyć" historię "Są też występy): Tutaj są. I ich liczba, z Wersja do wersji nadal wzrasta!
Z pewnością administratorzy Mastyczny mają wiele skryptów, umożliwiając uzyskanie informacji o aktualnym stanie serwera, ale co robić, jeśli doświadczenie pracy z DMV jeszcze nie jest, ale są już problemy?

sp_wwoisaktywne.

Adam Machanic (SQL Server MVP i MCITP) opracowała i stale skromuje procedurę składowaną sp_wist, która opiera się tylko na tych większości DMV i cholera, jest łatwa w użyciu. Pobierz najnowszą wersję sp_wwaktywnej. W Adam jest seria artykułów dedykowanych do sp_wwaktywnej, składającej się z 30 (trzydzieści!) Kawałki, możesz go przeczytać, a spróbuję cię zainteresować w czytaniu tego materiału :).
Załóżmy więc, że pobrałeś i uruchomiłeś ten skrypt na jednym z serwerów testowych (w dowolnej wersji, począwszy od 2005 r. I kończąc się Denali). Adam doradza, aby przechowywać go w bazie danych Master System, dzięki czemu można go wywołać w kontekście dowolnej bazy danych, ale nie jest to konieczne, tylko podczas dzwonienia do niego w kontekście innej bazy danych, musisz najpierw napisać nazwę - BD. Sham.sp_wwhoisaktywne.
Więc spróbuj. W zrzucie zrzutu ekranu wynikiem jego wykonania podczas budowy całego tego samego raportu:

Wynik prośby Exec Sp_Whoisactive, niestety nie istnieje na jeden ekran, więc opis tekstu wyjścia procedury przechowywanej spowodowaną bez parametrów.

  • - W przypadku aktywnego żądania pokazuje czas wykonania, dla sesji "Sleeping" - czas "snu";
  • - Właściwie spid;
  • - Pokazuje teraz tekst, który jest obecnie wykonany lub tekst ostatniego wykonanego zapytania, jeśli sesja śpi;
  • - Cóż, zrozumiałeś;
  • - Bardzo ciekawa kolumna. Jest wyświetlany w formacie (AX: BMS / CMS / DMS) E. A jest liczbą zadań oczekiwania na zasobach E. B / C / D - jest to czas oczekiwania w milisekundach. Jeśli zasób spodziewa się tylko jednej sesji (jak w zrzucie zrzutu), jego czas oczekiwania zostanie pokazany, jeśli 2 sesje są ich czasami oczekiwania w formacie B / C. Jeśli oczekujesz 3 lub więcej - zobaczymy minimalny, średni i maksymalny czas oczekiwania na ten zasób w formacie b / c / d;
  • - W przypadku aktywnego zapytania - całkowity czas procesora, wydany przez tę prośbę, dla sesji snu - całkowity czas procesora na "całe życie" tej sesji;
  • - W przypadku aktywnego zapytania jest to liczba operacji nagrywania w tempdb podczas wykonywania zapytania; W przypadku sesji spania - łączna liczba wpisów w tempdb dla całego życia sesji;
  • - W przypadku aktywnego zapytania - liczba stron w TEMPDB przeznaczono na ten wniosek; Dla sesji spania - całkowita liczba stron w tempdb przydzielona przez cały okres życia sesji;
  • - Jeśli nagle jesteśmy zablokowani przez kogoś, SPID (session_id) pokaże, kim jesteśmy zablokowani;
  • - dla aktywnego zapytania - liczba odczytów logicznych wykonanych podczas wykonywania tego żądania; Dla sesji snu - liczba odczytu stron dla całego życia tej sesji;
  • - wszystko to samo, ale o rekordzie;
  • - dla aktywnego zapytania - liczba odczytów fizycznych wykonanych podczas wykonywania tego żądania; Dla sesji spania - tradycyjnie całkowitą liczbę odczytów fizycznych na całe życie sesji;
  • - W przypadku aktywnego zapytania - liczba stron ośmiokolobyt używana w wykonywaniu tego żądania; Dla sesji spania - ile minut stron pamięci zostały podświetlone dla całego jej życia;
  • - Status sesji jest wykonywany, śpi itp.;
  • - Pokazuje liczbę transakcji otwartej tej sesji;
  • - pokazuje, czy istnieje taka szansa, proces działania operacji (na przykład, tworzenie kopii zapasowych, przywracania), nigdy nie pokazuj, ile procent jest wykonywane według wyboru.

Pozostałe kolumny B. standardowe wyjście Sp_wwhoisactive wygląda interesujące, a ja ich nie opiszę - ich celu, myślę, że jest zrozumiałe dla wszystkich (nazwę hosta, nazwa bazy danych, program_name, start_time, login_time, prośba_id, kolekcja_time).

I co? To wszystko?

Nie, to nie wszystko. Opowiadam ci także o tym, co (najciekawsze i przydatne, z mojego punktu widzenia) parametry można nazwać SP_WHOISCACTIVE i co będzie działać.

  • @Help jest strasznym użytecznym parametrem. Podczas dzwonienia sp_wwaktywne @Help \u003d 1 uzyskujemy informacje o wszystkich parametrach i kolumnach wyjściowych na ekranie. Więc jeśli coś pozostaje niezrozumiałe, zawsze możesz zobaczyć "pomoc"
  • @Filter_type i @filter - Pozwól, aby filtrować wynik wykonania. @Filter_type może zaakceptować "sesję", "program", "baza danych", "login" i "host". W parametrze @Filtera określamy, który przedmiot wybranego typu nas interesuje. Na przykład, chcemy zobaczyć wszystkie sesje działające w bazie danych głównej, ponieważ nazywamy Exec Sp_Whoisactive @Filter_type \u003d "bazy danych", @filter \u003d "Master". Parametr @Filter jest dopuszczalny do użycia "%";
  • @not_filter_type i @Not_filter - Pozwól nam filtrować "Wręcz przeciwnie". Te. Cóż, będziemy chcieli zobaczyć, że wszyscy użytkownicy mogą być ustawione. Parametr @not_filter jest dopuszczalny do użycia "%";
  • @show_system_spids \u003d 1 - pokaże informacje o sesjach systemowych;
  • @Get_Full_inner_text \u003d 1 - W polu SQL_Text nie będzie to nie tylko tekst bieżącego żądania (swetent) w opakowaniu (Batche), a tekst całego dozownika jest całkowicie;
  • @Get_plans - Dodaj do kolumny wyjściowej z planami wykonania zapytania;
  • @Get_transaction_info \u003d 1 - dodaje do wyjścia i objętości rekordów do dzienników transakcji, a także rozpoczęcie ostatniej transakcji;
  • @Get_locks \u003d 1 - zwiększa informacje o wyjściu Informacje o wszystkich blokadach narzucanych podczas wykonywania zapytania;
  • @find_block_leaders \u003d 1 - będzie podążać za łańcuchem blokady i pokaż całkowitą liczbę sesji, które czekają na odblokowanie bieżącej sesji;
  • @Output_Column_list \u003d "[%]" - Co jeśli nie chcesz zobaczyć informacji o tempdb w wyjściu sp_wwaktywnego? W tym parametrze możesz kontrolować fakt, który wyświetla;
  • @Destination_table \u003d "table_name" - spróbuje wstawić wynik wykonania, aby zapisać do tabeli, ale czy ta tabela nie sprawdzi, czy wystarczy do niego wstawić.

Teraz wszyscy

W rezultacie mamy kolejne niezwykle wygodne i elastyczne narzędzie do śledzenia bieżącej aktywności na SQL Server. W normalnej pracy jest to dość wystarczające do rozwiązania stanu serwera widoku i prawa do odwołania do DMV.
Warto również dodać, w przypadku, gdy możliwe jest połączenie tylko z serwerem

Ten produkt oprogramowania jest Sybase, pracujący z SQL Server i wystawiając różne informacje o wydajności serwera w formie graficznej. Informacje te są wyjątkowo przydatne podczas analizy powodów zmniejszania jego wydajności.

wersja 11.0.1 ma wiele nowych ważnych możliwości, które znacząco rozróżniają nową wersję ze wszystkich poprzednich poprzednich. 11.0.1 może pracować z dowolną wersją serwera SQL, począwszy od systemu 4.9.2 i końcowego 11.

Jednak niektóre z najciekawszych rodzajów informacji o charakterze wykorzystania obiektów bazy danych i interakcji serwera z siecią są wydawane tylko wtedy, gdy monitorowany SQL Server System 10 i System 11. Naturalnie, dane dotyczące działania nazwanych buforów pamięci podręcznej Jest wydawany tylko podczas kontrolowania wydajności systemu SQL Server 11.

W przypadku kompatybilności z poprzednimi wersjami 11.0.1 obsługuje również tryb wydawania informacji statystycznych na temat wydajności serwera do plików, które mogą być używane do późniejszego porównania i analizy. Ta szansa jest bardzo przydatna w praktyce, ale jego użycie komplikuje proces instalacji.

składa się z dwóch komponentów: moduł serwera działa na jednym komputerze z SQL Server, aby zapewnić dostęp do obszaru pamięci współdzielonej serwera i moduł klienta, który jest w stanie pracować na dowolnym komputerze. Głównym zadaniem modułu klienta jest czytanie informacji nagromadzonych przez moduł serwera, a jej prezentacja przez użytkownika w formie graficznej.

Podczas uruchamiania należy anulować kontrolę pamięci serwera wykonanej przez polecenie pamięci DBCC, ponieważ polecenie znacznie spowalnia działanie serwera. Aby to zrobić, podczas uruchamiania SQLMON (Moduł klienta) należy określić parametr nomem.

Domyślna konfiguracja zapewnia jednoczesne połączenie z pięcioma modułami klientów do jednego modułu serwera. Innymi słowy, może łączyć się z jednym modułem serwera lub pięciu modułów klienckich za pomocą jednego okna na każdym kliencie lub jednym kliencie z pięcioma otwartych okien.

Maksymalna liczba otwartych klientów jest zainstalowana, gdy moduł serwera jest uruchamiany.

W ten sposób, aby obsługiwać 20 okien w pliku poleceń modułu serwera, należy określić parametr P2 0. Będzie to wymagało zmiany na adres wybranej strefy pamięci serwera za pomocą komendy Buildmaster i inne działania. Działania te nie mogą być wykonywane podczas operacji SQL Server. (Szczegóły dotyczące procesu rozszerzenia liczby obsługiwanych klientów jednocześnie, patrz Podręcznik modułu serwera Server Server Server.)

ma kilka wad. Na przykład wykres słupkowy pokazujący liczbę operacji we / wy i inne cechy urządzeń serwera jest w stanie raportować dane jednocześnie tylko przez ograniczony numer urządzenia.

Jest to niewygodne podczas monitorowania dużego serwera z dużą liczbą urządzeń serwera. Ponadto Użytkownik nie może wybrać urządzeń, informacje, na których zostaną uwzględnione na diagramie, a także przełącznik między różnymi zestawami urządzeń.

Tabela tekstowa pojawi się na ekranie jednocześnie z diagramem zawiera listę wszystkich urządzeń serwerowych, ale zawiera tylko całkowitą liczbę operacji we / wy dla każdego z nich. Szczególnie trudno pracować z dużym serwerem, na którym utworzono wiele urządzeń obsługujących segmenty bazy danych użytkownika, aby zwiększyć jego wydajność. W takim przypadku analiza pracy wszystkich dostępnych segmentów jest niemożliwa.

nie zezwala również na dłuższy czas, aby wyświetlić dynamikę zmian w wskaźnikach wydajności.

Jest w stanie przesyłać dane na ekranie przez 60 kolejnych przedziałów pomiarowych wykonania. W zależności od wybranego czasu trwania każdego interwału, takie statystyki mogą obejmować dość duży okres czasu. Jednakże odbiór nie umożliwia porównaniu bieżących danych z wskaźnikami miesięcznego lub rocznego ograniczenia.

Oczywiście obrazy programu Windows mogą być wydawane drukarce, ale wtedy musisz przechowywać zestawy plików lub wydruki górskie, aby ocenić przyszłą wydajność serwera. W praktyce administrator serwera często musi ponownie przeglądać dane uzyskane w różnych okresach cyklu biznesowego Spółki, a także porównywać informacje o tych samych okresach cykli przedsiębiorstw szeregowych, aby uzyskać pomysł prawdziwego występu serwera .

Ponieważ uruchomienie prowadzi do samodzielnego spowolnienia serwera, przed rozpoczęciem pomiarów konieczne jest określenie wartości tego spowolnienia dla określonej platformy sprzętowej i oprogramowania. Dobrą metodą pomiarową jest wykonanie standardowego zestawu transakcji testowych.

Może być stosowany zarówno w obecności, jak i na braku na maszynie serwera. Nawet jeśli nie ma modułów klientów, moduł serwera programu kontynuuje jego działanie i musi być zatrzymany przez osobne polecenie.

umożliwia produkcję kilku, różnych graficznych okien na ekranie, z których każdy zawiera informacje o określonym aspekcie funkcjonowania serwera.

Główne okno (główne okno)
Zawiera listę okien obsługiwanych przez program. W przypadku, gdy rozpocznie się moduł Klienta Sglmon-Client, parametr Nomem nie został określony, schemat obwodu pamięci maszyny serwera będzie również wydawany w tym oknie.

Bufory pamięci podręcznej (pamięć podręczna)
W tym oknie wydawane są wykresy, charakteryzujące pracę buforów pamięci podręcznej procedur i danych. Sterując liczbą fizycznych i logicznych operacji we / wy w buforze danych, użytkownik może określić, która część danych do stron danych będzie działać za pomocą stron już znajdujących się w buforze. Takie statystyki uzyskane przez bufor danych, a bufor procedury umożliwiają określenie całkowitej ilości pamięci wymaganej przez bufory pamięci podręcznej serwera oraz stosunek między buforami i procedurami danych.

Dane bufora pamięci podręcznej tylko dla SQL Server System 11 (dane CACH)
Okno zgłasza liczbę fizycznych i logicznych operacji we / wy każdej z nazwanych buforów pamięci podręcznej skonfigurowanych na serwerze.

Wejście / wyjście dysku (urządzenie I / O)
Oto grafiki i tabele podsumowujące na bieżącej i kompletnej liczbie odwołań do dysków. Pomagają optymalizować rozkład obciążenia we / wy wśród dostępnych urządzeń serwera. Analizując wydane informacje, przydatne jest użycie standardowego diagramu wyboru nazw urządzeń serwera przez nazwy odpowiednich partycji dysków fizycznych, ponieważ obserwując kurs wymiany z urządzeniami serwera, powinieneś wiedzieć, jak każdy z tych urządzeń jest podłączony do którego kontrolera dysku.

Praca z siecią, tylko dla SQL Server System 10 i 11 (aktywność sieciowa)
Okno jest zgłaszane do informacji statystycznych na wejściu sieciowym "Wyjście - rozmiar pakietów, objętości ruchu itp.

Zablokuj dostęp do obiektów tylko dla SQL Server System 10 i 11 (stan blokady obiektów)
Dostarcza informacji o blokowaniu danych do tabel danych, w tym szczegółowy rozkład typów używanych zamków, nazwami procesów, które utrzymują blokadę itp.

Wprowadzenie stron obiektów tylko dla SQL Server System 10 i 11 (strona obiektu I / O)
Okno zawiera informacje o intensywności porty we / wy jednej z tabel danych serwera. Zwróć uwagę na skuteczność podczas opracowywania listy najczęściej używanych tabel serwerowych. Takie informacje nie są wydawane przez procedurę SP_SYSMON.

Sumar wydajności (wydajność)
Tutaj przedstawiono ogólny obraz funkcji SQL Server - procent czasu procesora jest prezentowany, ilość transakcji przetworzona na sekundę, ilość ruchu sieciowego, I / O, a także intensywność korzystania z zamków .

Dynamika wskaźników wydajności (trend wydajności)
Ciągłe wykresy wskaźników ograniczeń czasowych wydanych w oknie podsumowania wydajności są zbudowane w oknie.

Aktywność procesu serwera (aktywna procesu)
Okno pozwala wybrać jeden lub więcej procesów serwera i postępować zgodnie z zastosowaniem objętości procesora i we / wy dla każdego z procesów.

Szczegółowe szczegóły procesu (szczegóły procesu)
Okno zawiera szczegółowe informacje o wybranym procesie serwera.

Lista procesów (lista procesów)
Okno zawiera listę wszystkich aktualnie dostępnych procesów serwera wskazujących ich status. Bardzo podobny do wydawania polecenia serwera SP_WHO.

Za pomocą blokad (aktywność blokady procesu)
Okno pojawia się informacje o korzystaniu z blokady do wybranego procesu serwera.

Korzystanie z procedur przechowywanych (aktywność procedury składowanej)
Okno zawiera informacje o wykonaniu procedur przechowywanych i czas pracy każdej procedury.

Transakcja transakcyjna (działalność transakcyjna)
W oknie można zobaczyć wykres kolumny pokazujący ilość dystrybucji przetworzonej transakcji przez różne rodzaje transakcji. Na przykład, jaka część transakcji można wykonać za pomocą mechanizmu aktualizacji na miejscu (aktualizacja na miejscu).

12.26.2006 Kevin Kine.

Jakie pytanie najmniej chcesz uzyskać administrator bazy danych? Prawdopodobnie wiadomość od użytkownika o pogorszeniu wniosku lub kwestii tego, co wydarzyło się z bazą danych. Konieczne jest odłożenie wszystkich przypadków i przejść do "trybu awaryjnego", zgadywanie, niezależnie od tego, czy jest on długi czas. Ponieważ jednym z głównych obowiązków administratora bazy danych jest zapewnienie jakościowe funkcjonowanie baz danych przemysłowych, pozostaje tylko szybkie wyeliminowanie awarii. Czas, aby dowiedzieć się przyczyny niepowodzenia, jako reguły, nie.

Więcej Avrals - tylko obserwacja systematyczna

Ale czy to jedyna rzecz, którą można zrobić? Możliwe jest przeprowadzenie proaktywnego monitorowania wydajności, prostą procedurę zarządzania, która wykorzystuje definicję podstawowych parametrów systemu, otrzymywania norm i ciągłej obserwacji. W tym artykule, powiem ci, jak zastosować proaktywny monitoring i jak utworzyć bezpłatny system sterowania za pomocą monitora systemu Windows.

Proaktywne monitorowanie

Proactive Performance Monitoring to prosty system, który umożliwia rozwiązanie problemów, zanim stają się krytyczne. Ktoś prawdopodobnie już wykorzystuje obserwację wyjątkowych sytuacji, gdy tworzone są zautomatyzowane procesy, które zawiadomią tylko odstępstwa od normy, ale nie dostarczają głębokich informacji i nie zapewniają możliwości zapobiegania problemom. Proaktywne monitorowanie wydajności, wręcz przeciwnie, zapewnia użytkownikowi wszelkiego rodzaju informacji na temat środowiska pracy i zastosowań oraz krótkoterminowy i długoterminowy. Odczyty liczników Charakterystyki bazy danych są usuwane, ustawione są metryki odniesienia, a tryb aktywny monitoring jest obsługiwany.

Ponieważ nazwa oznacza proaktywne monitorowanie wydajności wymaga działań. Konieczne jest spędzenie czasu na instalacji i pewnym czasie, aby zrozumieć funkcjonowanie baz danych i aplikacji. Aby zapewnić skuteczne monitorowanie wydajności, należy wyświetlić wiadomości, dzięki czemu można użyć obszernych danych zebranych.

Podstawowe parametry, standard, monitor

Zacznijmy od definicji kilku terminów. Parametry wyjściowe (linia bazowa) - Jest to zestaw parametrów wyświetlających zachowanie serwera i zastosowania w normalnych warunkach. Podstawowe parametry uzyskuje się jako średnia dla wyników kilku pomiarów wykonanych w tych samych warunkach; Są one wytycznymi referencyjnymi.

Reper Pokazuje wydajność systemu na pewnym poziomie ładowania serwera, który umożliwia porównanie wydajności serwera przemysłowego na takim poziomie i określa wskaźniki serwera, jak bardzo są wyższe lub poniżej normy (tj. Serwer działa źle). Podobnie jak w przypadku parametrów podstawowych, wartości standardów są usuwane w kontrolowanym środowisku, wartości kluczy są określane w stosunku do predefiniowanych wskaźników. Jeśli chcesz zobaczyć, jak serwer i aplikacja zachowuje się na kilku poziomach lub typach pobierania, zwykle otrzymuje się kilka wartości odniesienia (w odniesieniu do parametrów podstawowych).

Monitorowanie (monitorowanie) - Jest to zaplanowany nadzór w serwerze w czasie rzeczywistym na predefiniowanych warunkach (zestawy warunków określonych w celu dalszych badań lub ostrzeżeń). Na przykład, jeśli chcesz dowiedzieć się, ile czasu zajmuje dobrą wykonanie ważnej aplikacji biznesowej, jak długo trwa kopia zapasowa i gdy osiągnięto pewne wartości wydajności, a następnie obserwacja jest monitorowana.

Teraz zajmiemy się proaktywnym monitorowaniem. Możesz użyć produktów innych firm lub bezpłatnego rozwiązania, które używa monitora systemu. Decyzje firm trzecich mogą uprościć proces dostosowywania proaktywnego monitorowania i mieć funkcje inne niż te, które mogą zapewnić bezpłatne rozwiązanie wbudowane. Ale zanim zaczniesz, pokażę sposób wykonania proaktywnego monitorowania przy użyciu monitora systemu.

Krok 1: Określ podstawowe parametry wydajności.

W pierwszym kroku, aby zapewnić tryb sterowania monitorowania proaktywnego, ustanowiony zestaw podstawowych parametrów serwera bazy danych. Ten zestaw wskazuje na wydajność serwera w normalnych warunkach, pomaga udokumentować i zrozumieć wszystkie istotne procesy tła, również pomaga wyznaczyć sytuacje, które nie wymagają interwencji, aby nie zwracać na nich uwagi. Innymi słowy, administratorzy baz danych mogą określić opcje dla ignorowania wiadomości systemowych, ponieważ w przeciwnym razie utworzono dużą liczbę fałszywych powiadomień.

Aby wizualnie pokazać jakość funkcjonowania, najlepsze podstawowe parametry używają niektórych wykresów (najlepiej jeden), aby na pierwszy rzut oka można zobaczyć, jak działa serwer. Po zdefiniowaniu podstawowych parametrów należy wykonać następujące czynności. Najpierw wybierz opcję zapisania danych wydajności w dzienniku systemowym lub wyświetlaczu czasu rzeczywistego. Idealny do posiadania obu możliwości: dzienniki rejestracyjne umożliwiają powrót do odczytów w dowolnym momencie, aby przeanalizować, jaką produktywność była w przypadku bezpośredniego monitorowania systemu nie została przeprowadzona. Monitorowanie w czasie rzeczywistym nie zajmuje miejsca pracy na zasobach dysku i serwera, ale wymaga systemu 100 procent uwagi. Po drugie, konieczne jest określenie interwału, przez które zostaną przeprowadzone obserwacje, biorąc pod uwagę koszty wykonania gromadzenia danych i operacji we / wy oraz ocenić koszty pożądanej przestrzeni. Im większy odstęp, tym wyższe prawdopodobieństwo, że nie są zainteresowane dane produktywności. I wreszcie wybierz lokalny lub zdalny monitoring. Lokalne monitorowanie, w którym proces monitorowania wykorzystuje kontrolowany serwer, dodaje koszty niewinia do dysku procesora i serwera. Zdalne monitorowanie, które wykorzystuje oddzielny serwer może pozbyć się takich problemów, ale znacznie zwiększa obciążenie pracą w sieci.

W wymienionych metrach monitora systemu lub liczników, które zalecane są stosowanie do określenia podstawowych parametrów. Nie mogę powiedzieć, jaka jest wartość "poprawna" w kontekście oddzielnej aplikacji, ponieważ różni się od systemu do systemu. Użyj średniej wartości różnych podstawowych parametrów, aby zainstalować zwykły standard (za pomocą parametrów podstawowych) i wyznaczyć, że ta opcja jest poprawna dla systemu operacyjnego.

Definiowanie podstawowych parametrów za pomocą monitora systemu

Teraz w celu zbierania podstawowych parametrów, monitor systemu połączeń. Otwarty panel sterowania, narzędzia administracyjne, wydajność. Kliknij dwukrotnie dzienniki wydajności i alerty na lewym okienku. Naciśnij prawy przycisk na dziennikach licznika i określ nowe ustawienia dziennika. Wprowadź nazwę wykresu, a następnie kliknij przycisk OK. W oknie dialogowym Wybierz liczniki wybierz pierwszy licznik, a następnie kliknij przycisk Dodaj. Powtórz te operacje, aż do dodawania wszystkie liczniki, a następnie kliknij Zamknij.

Aby rozpocząć, spróbuj domyślnego odstępu 15-sekundowego. Lub wybierz inny interwał, naciskając Właściwości (lub użyj karty klawisza skrótu Ctrl + Q), a następnie wprowadź wartość pod oznaczeniem próbki automatycznie każdy: _ sekundy. Dłuższe przedziały zajmują mniej miejsca, zapewniają one mniej szczegółowe dane.

Wybierz tabelę plików dziennika i określ lokalizację, w której zostaną zapisane dane. Możliwe jest wyświetlenie danych później za pomocą widoku widoku Dane pliku dziennika. Monitor systemu będzie wyglądał na ekranie 1, gdy zbiera dane podstawowych parametrów wydajności. Można zauważyć, że podczas śledzenia wielu metrów można zebrać wiele danych, więc należy dokładnie wybrać liczniki do linii głównej.

Krok 2: Ustawianie wartości odniesienia

Po zainstalowaniu podstawowych parametrów wydajności serwera można rozpocząć instalowanie wartości odniesienia, co ułatwia zrozumienie wydajności serwera podczas pracy w kilku z góry określonych sytuacjach.

W przypadku standardów ten sam tryb monitorowania jest używany w celu określenia podstawowych parametrów. Możesz używać rozwiązania lub jednego z wspólnych narzędzi przemysłowych, takich jak TPC-C lub SAP, ale najlepsze wyniki obliczeń wartości odniesienia są uzyskiwane podczas opracowywania konwencjonalnych poszczególnych scenariuszy, które są skonfigurowane do korzystania z określonego serwera bazy danych i jego zastosowania.

Możesz utworzyć własny scenariusz za pomocą zestawu skryptów T-SQL, OSQL Utilities lub Analyzer Query, SQL Profiler i Monitor System. Rozwój scenariuszy testów obciążenia w T-SQL zwykle trwa kilka dni. Jeszcze więcej czasu może być konieczne zebranie wykonania testów obciążenia i analizy uzyskanych danych.

Po określeniu podstawowych parametrów wydajności serwera za pomocą z góry określonych ładunków możliwe będzie wiedzieć, czego można oczekiwać od systemu. Użyj danych zebranych podczas odbierania wartości odniesienia, aby utworzyć podstawę planowanej obserwacji. Na przykład, okazało się, że serwer jest w stanie zapewnić do 249 transakcji na sekundę, zanim jego praca zacznie spowolnić. W takim przypadku można zainstalować powiadomienie o niskim priorytecie, gdy serwer osiągnie pobieranie około 200 TP i powiadomienia o wysokim priorytecie, gdy serwer osiągnie 235 TPS. Ta metoda pozwoli administratorowi dowiedzieć się o możliwych problemach z serwerem i podjąć niezbędne środki przed zauważeniem wszystkich. I żadne krytyczne sytuacje. Teraz jest to możliwe.

Krok 3: Planowany monitorowanie

Być może najważniejszym składnikiem trybu monitorowania proaktywnego jest planowany monitorowanie. Bez niej niemożliwe jest przestrzeganie funkcjonowania bazy danych lub wykrywania problemów w wydajności.

Możesz utworzyć niedrogie narzędzie do monitorowania SQL Server za pomocą kombinacji agenta SQL Server i monitora systemu. SQL Server Agent umożliwia określenie, które wyjście zdarzenia do monitora, ustaw, który odbiera błąd na temat zdarzeń i automatycznie wysłać powiadomienie, gdy pojawi się zdarzenie błędu.

Instalacja agenta SQL Server może być długi czas i trudny, więc konieczne będzie odnosić się do sekcji Opis Alert w SQL Server Książki online (BOL). SQL Server Agent zwykle wykonuje bieżącą kontrolę komunikatów o błędach obsługi serwera bazy danych i nie kontroluje wykonania.

Monitor systemu służy do monitorowania wydajności serwera do monitorowania obecnych liczników (ustaw częstotliwość badania do 15 minut).

Strony pamięci / sek

Interfejs sieciowy Total / s

Fizyczne transfery dysku dysków / s

Czas procesora procesora

SQLServer: Metody dostępu - pełne skanowanie / sek

SQLServer: Współczynnik podręczny buforów bufora

SQLServer: Bazy danych aplikacji Aplikacja transakcje / sek

SQLServer: ogólne statystyki-użytkownika koktajl

SQLServer: Latches - średni czas oczekiwania zatrzaskowego

Sqlserver: Blokada - średni czas oczekiwania

SQLServer: limit czasu blokady blokady / s

SQLServer: Blokada-liczba zakleszczeń / s

SQLServer: Memory Manager-Memory Dotary oczekujące

Ustaw wartość dla każdego licznika między wartościami parametrów podstawowych i wartości odniesienia, które testowały. Na przykład, można ustawić powiadomienie, gdy miernik osiągnie 75 procent wartości obciążenia, a komunikat ostrzegawczy, gdy przechodzi 90 procent.

Aby wykonać ostrzeżenia, można korzystać z bezpłatnych narzędzi, takich jak powiadomienia i powiadomienia SQL Server, monitor systemu ani zakup Microsoft Operations Manager (MOM) lub inne środki. Polecam ustawienia ostrzeżeń przynajmniej dla następujących sytuacji:

  • błędy wpływające na działanie, zwłaszcza błędy z wskaźnikiem ważności od 19 do 25
  • zamek
  • za pomocą procesora.
  • dysk używania
  • skanowanie (SQLServer: Metody dostępu)

Możesz wysłać alarmy, aby powiadomić administratorów za pośrednictwem poczty e-mail, pagera lub sieci. Możesz zainstalować zautomatyzowane ostrzeżenia dla następujących komunikatów:

  • sQL Server Journal.
  • magazyn SQL Agent.
  • okna, bezpieczeństwo i system
  • dziennik zadania dziennika SQL Server

Wreszcie konieczne jest upewnienie się, że ich własne aplikacje do projektowania prawidłowo rejestrują błędy, a ponadto reaguj na komunikaty o błędach z innych opracowanych aplikacji.

Proaktywne monitorowanie wydajności SQL Server oznacza definicję podstawowych parametrów wydajności zarówno dla serwera, jak i aplikacji; Instalowanie wartości odniesienia, które symulują funkcjonowanie serwera zgodnie z ustalonym scenariuszem i wykonującym zaplanowane monitorowanie, idealnie inicjując ostrzeżenie po wykryciu problemu. Niezależnie od tego, czy używane są bezpłatne lub wbudowane narzędzia, czy wybrano rozwiązania niezależnych firm, obecność gwarancji kontrolnych, które otrzymasz niezbędne informacje na temat działania aplikacji na serwerze SQL w żądanym momencie.

Tabela 1. Obiekty i mierniki monitora systemu w celu określenia podstawowych parametrów
Obiekt i licznik Opis
Strony pamięci / sekLiczba stron czytania lub zapisu na dysk na sekundę. Ten miernik jest głównym wskaźnikiem typu błędu spowodowanego przez systemowe opóźnienia lub problemy z wydajnością
Interfejs sieciowy Total / sLiczba bajtów przechodzących przez interfejs sieciowy na sekundę. Gdy wskaźnik tego miernika zmniejsza się lub ma taką tendencję, wskazuje, że problemy z siecią mogą wpływać na wniosek
Transfery dyskusyjne / sekundyOcena operacji dysku odczytu / zapisu. Zainstaluj miernik dla każdego dysku fizycznego na serwerze
Czas procesora procesoraProcent czasu, w którym procesor spędza wykonanie przepływu pracy. Ten licznik działa jako główny wskaźnik aktywności procesora. Jeśli wszystkie procesory działające na SQL Server pokazują sto procentów, żądania użytkownika końcowego są najprawdopodobniej ignorowane
SQLServer: Metody dostępu - pełne skanowanie / sekLiczba nieograniczonych ukończonych tabel lub skanów indeksu na sekundę. Obniżenie wartości tego licznika na lepsze, ponieważ widoki często powodują brak zasobów problemu buforowania
SQLServer: Współczynnik podręczny buforów buforaOdsetek stron, które nie wymagały odczytu z dysku. Im wyższa liczba, tym mniejsze wejście / wyjście na dysku jest wykonywane. W dobrze dostrojonym systemie ta wartość musi wynosić 80 lub więcej.
SQLServer: Wzrosty bazy danychJeśli chodzi o określoną bazę danych plik transakcji. W dobrze dostrojonym systemie wartość tego licznika musi być niski, prawdopodobnie mniej niż jeden w ciągu kilku dni
SQLServer: Zastosowany dziennik bazy danych aplikacjiProcent wolnego miejsca w pliku dziennika. Ten licznik będzie się różnić, ale nie powinien sięgać 100
SQLServer: Bazy danych aplikacji Aplikacja transakcje / sekLiczba transakcji potwierdzona w bazie danych. To licznik obniżyły się w standardach. Oglądaj, gdy transakcje zaczynają wyrównać, wskazuje, że wejście / wyjście dysku mogą być powolne
SQLServer: Latches - średni czas oczekiwania zatrzaskowegoŚredni czas opóźnienia zapytania przed wypełnieniem. Ta wartość licznika może być wysoka, gdy serwer stoi na rywalizacji zasobów, zwłaszcza do pamięci lub do wejścia / wyjścia
SQLServer: Blokada - średni czas oczekiwania, blokada czeka / s, liczba zakleszczeń / sekTymczasowe zamki przytrzymują zasoby SQL Server. Obejrzyj tendencję wzrostową tego blokowania złącza, co wskazuje na możliwy problem wydajności
SQLServer: Ogólne połączenia użytkowników statystyczneLiczba niestandardowych połączeń z serwerem bazy danych. Sprawdź zauważalne zmiany w wartości tego licznika. Mogą one wskazywać na problemy z siecią i wskazują obciążenia i zwalnianie.
SQLServer: Memory Manager-Memory Dotary oczekująceObecna liczba procesów oczekujących na zapewnienie przestrzeni pamięci. Wysoka lub rosnąca wartość może wskazywać na niewystarczającą pamięć.
SQLServer: User Settable-Query (Query Tracer)Specjalistyczny miernik, znany również jako wskaźnik zapytania. Ten miernik jest utworzonym przez użytkownika żądanie, która wskazuje całkowitą prędkość lub wydajność systemu. Aby ustawić tę wartość, aplikacja wywołuje sp_user_counter1 i zwraca wartość liczbową.