Podziel się teraz:
Spis treści ukryć

1. Wprowadzenie do SQL Server monitor wydajności

1.1 Co to jest SQL Server Monitor wydajności?

SQL Server Monitor wydajności to proces śledzenia, analizowania i zarządzania wydajnością i kondycją Twojego systemu. SQL Server Bazy danych. Polega ona na gromadzeniu i interpretowaniu danych o różnych aspektach systemu baz danych w celu zapewnienia optymalnej wydajności, zapobiegania problemom i utrzymania prawidłowego działania bazy danych.

Monitorowanie wydajności obejmuje śledzenie czasu wykonywania zapytań, wykorzystania zasobów, wydajności indeksów, blokowania i zakleszczeń oraz wzorców wzrostu bazy danych. Ten ciągły nadzór pomaga administratorom identyfikować potencjalne problemy, zanim wpłyną one na użytkowników lub działalność biznesową.

1.2 Kluczowe korzyści monitorowania wydajności

Efektywne SQL Server Monitor wydajności zapewnia kilka kluczowych zalet:

  • Proaktywne wykrywanie problemów: Identyfikuj i rozwiązuj potencjalne problemy, zanim wpłyną one na użytkowników lub działalność biznesową
  • Optymalizacja wydajności: Zidentyfikuj wąskie gardła i nieefektywności, aby poprawić ogólną wydajność bazy danych
  • Planowanie pojemności: Prognozuj zapotrzebowanie na zasoby i planuj przyszły rozwój na podstawie danych historycznych
  • Zgodność i bezpieczeństwo: Zapewnienie przestrzegania wymogów regulacyjnych i wykrywanie podejrzanych działań

1.3 Typowe problemy z wydajnością

Bez odpowiedniego monitora wydajności bazy danych SQL organizacje stają w obliczu kilku zagrożeń:

  • Nieoczekiwane przestoje zakłócające działalność biznesową
  • Niska wydajność aplikacji wpływająca na komfort użytkowania
  • Utrata lub uszkodzenie danych
  • Nieefektywne wykorzystanie zasobów prowadzące do niepotrzebnych kosztów
  • Frustracja użytkowników i potencjalna utrata przychodów

Według badania IDC z 2023 r. 65% problemów z wydajnością baz danych wynika z nieodpowiedniego monitorowania lub praktyk optymalizacji.

2. Informacje o Monitorze wydajności systemu Windows (PerfMon)

2.1 Czym jest Monitor wydajności systemu Windows?

Monitor wydajności systemu Windows (PerfMon) to wbudowane narzędzie systemu Windows, które monitoruje zasoby systemowe i wydajność aplikacji. SQL Server administratorzy, PerfMon zapewnia bezcenne informacje na temat systemu operacyjnego i SQL Server metryk, co sprawia, że ​​są one niezbędne do kompleksowej analizy wydajności.

Monitor wydajności systemu Windows (PerfMon)

PerfMon mierzy statystyki wydajności w regularnych odstępach czasu i zapisuje je w plikach do późniejszej analizy. Administratorzy baz danych mogą wybrać przedział czasowy, format pliku oraz statystyki do monitorowania. Narzędzie nie jest SQL Server-specyficzne — administratorzy systemów używają go do monitorowania samego systemu Windows, programu Exchange, serwerów plików i wszelkich aplikacji, w których mogą występować wąskie gardła.

2.2 Uruchamianie Monitora wydajności

Monitor wydajności można uruchomić na kilka sposobów:

  1. Kliknij Uruchomtyp perfmon w polu wyszukiwania kliknij „Monitor wydajności” w wynikach wyszukiwania:
    Wyszukaj i uruchom PerfMon z pola wyszukiwania systemu Windows.
  2. Naciśnij przycisk Windows + Rtyp perfmoni naciśnij Enter
    Uruchom PerfMon z pola Uruchom systemu Windows.
  3. Przejdź do Panelu sterowania -> System i zabezpieczenia -> Narzędzia administracyjne -> monitor wydajności
    Uruchom PerfMon z Panelu sterowania -> System i zabezpieczenia -> Narzędzia administracyjne -> Monitor wydajności

3. niezbędny SQL Server Liczniki wydajności

3.1 Liczniki wydajności pamięci

Liczniki pamięci są kluczowe dla monitorowania SQL Server wydajność, ponieważ wskazują, czy baza danych ma wystarczające zasoby pamięci.

Dostępne MB

Ten licznik pokazuje ilość pamięci fizycznej dostępnej do natychmiastowej alokacji. Powinna ona utrzymywać się na względnie stałym poziomie i idealnie nie spadać poniżej 4096 MB. Niskie wartości mogą wskazywać, że SQL Servermaksymalne ustawienie pamięci jest pozostawione na wartości domyślnej lub nieSQL Server aplikacje zużywają pamięć.

Strona Oczekiwana długość życia

Oczekiwana długość życia strony mierzy czas (w sekundach), przez jaki strona pozostaje w puli buforów bez odwoływania się do niej. Normalna wartość to 300 sekund lub więcej. Niższe wartości wskazują na obciążenie pamięci i nadmierną rotację bufora, co zmniejsza efektywność pamięci podręcznej.

Współczynnik trafień bufora pamięci podręcznej

Ten licznik wskazuje odsetek żądań danych, na które udzielono odpowiedzi za pomocą bufora pamięci podręcznej SQL, a nie odczytu z dysku. Zwykle osiąga lub przekracza 99%. Niższe wartości sugerują, że SQL Server potrzebuje więcej pamięci lub nadal się rozgrzewa po ponownym uruchomieniu.

Oczekiwanie na przyznanie pamięci

Pokazuje liczbę procesów oczekujących na pamięć w SQL ServerW normalnych warunkach wartość ta powinna stale wynosić 0. Wyższe wartości wskazują na niewystarczającą alokację pamięci. SQL Server.

Pamięć serwera docelowego a całkowita pamięć serwera

Pamięć serwera docelowego wskazuje idealną ilość pamięci SQL Server chce użyć. Całkowita pamięć serwera pokazuje, co SQL Server Obecnie używane. Stosunek tych wartości powinien wynosić około 1. Znaczne różnice mogą wskazywać na obciążenie pamięci lub jej niewystarczającą dostępność.

3.2 Liczniki wydajności procesora

Liczniki procesora pomagają zidentyfikować wąskie gardła procesora i zrozumieć, jak SQL Server wykorzystuje zasoby obliczeniowe.

% czasu procesora

Mierzy procent czasu, jaki procesor spędza na wykonywaniu wątków niebędących bezczynnymi. Na aktywnych serwerach wartości mogą gwałtownie wzrosnąć do 100%, ale stałe obciążenie powyżej 70-75% zazwyczaj wskazuje na problemy z wydajnością dla użytkowników. Brakujące lub nieodpowiednie indeksy często powodują wysokie obciążenie procesora.

% czasu uprzywilejowanego

Czas procesora dzieli się na przetwarzanie w trybie użytkownika i trybie uprzywilejowanym (jądra). Cały dostęp do dysku i operacje wejścia/wyjścia odbywają się w trybie jądra. Jeśli licznik ten przekracza 25%, system prawdopodobnie wykonuje zbyt dużo operacji wejścia/wyjścia. Normalne wartości mieszczą się w przedziale od 5% do 10%.

Długość kolejki procesora

Ten licznik pokazuje wątki oczekujące na zasoby procesora. Wartości stale powyżej 1 (z wyjątkiem SQL Server Kompresja kopii zapasowej) wskazuje na obciążenie procesora. Często oznacza to, że na komputerze są zainstalowane inne aplikacje. SQL Server maszyny, co narusza najlepsze praktyki.

Przełączenia kontekstu/sek.

Mierzy częstotliwość przełączania się procesora między wątkami. Nadmierne przełączanie kontekstu może wpływać na wydajność i wskazuje na wysokie obciążenie systemu.

3.3 Liczniki wydajności wejścia/wyjścia dysku

Liczniki dysków odgrywają istotną rolę w monitorowaniu wydajności SQL, gdyż operacje wejścia/wyjścia na dysku często stają się wąskim gardłem w systemach baz danych.

% czasu dysku

Rejestruje procent czasu, przez jaki dysk był zajęty operacjami odczytu/zapisu. Wartości stale powyżej 85% wskazują na wąskie gardło wejścia/wyjścia. Ponieważ dysk jest znacznie wolniejszy niż pamięć, obniżenie tej wartości poprawia wydajność.

Średnia liczba sekund na odczyt dysku i średnia liczba sekund na zapis dysku

Liczniki te mierzą średni czas (w sekundach) operacji odczytu i zapisu. Jeśli wartości średnie przekraczają 10–20 ms, przetwarzanie danych na dysku zajmuje zbyt dużo czasu. Dyski z dziennikiem transakcji wymagają szczególnie dużej wydajności zapisu.

Długość kolejki dyskowej

Pokazuje oczekujące żądania odczytu/zapisu na dysk. Wartości stale wyższe niż 2 (lub 2 na dysk w przypadku macierzy RAID) oznaczają, że dysk nie nadąża za żądaniami wejścia/wyjścia.

Bajtów dysku/sek.

Monitoruje szybkość transferu danych na/z dysku. Jeśli przekroczy ona nominalną pojemność dysku, dane zaczynają się zalegać, co sygnalizuje rosnąca długość kolejki dyskowej.

Transfery dyskowe/sek.

Śledzi liczbę operacji odczytu/zapisu wykonanych na dysku. SQL Server Dostęp do danych jest zazwyczaj losowy, co jest wolniejsze ze względu na ruch głowicy dysku. Upewnij się, że ta wartość jest niższa niż maksymalna wartość znamionowa dysku (zwykle 100/s dla standardowych dysków).

3.4 SQL Server Liczniki specyficzne

3.4.1 Liczniki menedżera buforów

Monitor liczników Menedżera buforów SQL ServerOperacje bufora pamięci:

  • Odczyty strony/sek.: Łączna liczba odczytów stron fizycznej bazy danych
  • Strona pisze/sek.: Łączna liczba zapisów na fizycznych stronach bazy danych
  • Lazy pisze/sek: Liczba buforów zapisanych przez leniwego pisarza w celu zwolnienia pamięci
  • Liczba stron punktów kontrolnych/sek.: Strony opróżnione przez punkt kontrolny lub inne operacje wymagające opróżnienia wszystkich brudnych stron

3.4.2 Liczniki statystyk SQL

Liczniki te zapewniają wgląd w SQL Server przetwarzanie zapytań:

  • Żądania zbiorcze/sek.: Liczba żądań wsadowych SQL odebranych przez serwer. Służy jako punkt odniesienia dla aktywności serwera.
  • Kompilacje SQL/sek.: Liczba kompilacji SQL. Powinna wynosić 10% lub mniej całkowitej liczby żądań wsadowych/s.
  • Ponowne kompilacje SQL/sek.: Liczba rekompilacji SQL. Powinna również wynosić 10% lub mniej całkowitej liczby żądań wsadowych na sekundę.

3.4.3 Liczniki statystyk ogólnych

  • Połączenia użytkowników: Liczba użytkowników połączonych z systemem. Służy jako punkt odniesienia do śledzenia wzrostu liczby połączeń w czasie.
  • Zablokowane procesy: Aktualna liczba zablokowanych procesów. Idealnie powinno być 0.

3.4.4 Liczniki menedżera pamięci

  • Oczekujące przyznania pamięci: Całkowita liczba procesów oczekujących na przydział pamięci obszaru roboczego. Idealnie powinna wynosić 0.

4. Konfigurowanie Monitora wydajności dla SQL Server(Windows Vista / Server 2008 i nowsze)

Przede wszystkim musimy utworzyć kontener, który ułatwi zarządzanie licznikami:

  • W przypadku systemów Windows Vista/Server 2008 i nowszych w tej sekcji można tworzyć zestawy modułów zbierających dane.
  • W przypadku systemów Windows XP/Server 2003 i starszych można tworzyć dzienniki liczników w następna sekcja.

4.1 Czym są zestawy kolektorów danych?

Zestawy Data Collector Sets organizują liczniki wydajności, dane śledzenia zdarzeń i informacje o konfiguracji systemu w jedną jednostkę gromadzenia danych. Zapewniają one większą elastyczność niż proste dzienniki liczników i umożliwiają automatyczne, zaplanowane gromadzenie danych w celu kompleksowego monitorowania wydajności bazy danych SQL.

4.2 Tworzenie zestawu kolektorów danych

Utwórz niestandardowy zestaw modułów zbierających dane do monitorowania SQL Server liczniki wydajności:

  1. Otwórz Monitor wydajności
  2. Rozszerzać Zestawy kolektorów danych
  3. Kliknij prawym przyciskiem myszy Określony przez użytkownika
  4. Wybierz Nowości -> Zestaw kolektora danych
    Utwórz nowy zestaw kolektorów danych w PerfMon
  5. Wprowadź opisową nazwę (np. „SQL Server „Metryki wydajności”
  6. Wybierz Utwórz ręcznie (zaawansowane)
    Ustaw nazwę opisu dla zestawu kolektora danych
  7. Kliknij Następna
  8. Sprawdź Utwórz dzienniki danych -> Licznik wydajności
    W kreatorze Utwórz nowy zestaw modułów zbierających dane wybierz opcję Utwórz dzienniki danych -> Licznik wydajności.
  9. Kliknij Następna
  10. Kliknij Dodaj aby wybrać liczniki
  11. Dodaj życzenia SQL Server i liczniki systemowe.
    Dodaj liczniki wydajności do nowego zestawu modułów zbierających dane.
  12. Ustaw Interwał próbki
    • W przypadku rutynowego monitorowania należy stosować 1 minutę (60 sekund)
    • W przypadku aktywnego rozwiązywania problemów należy poświęcić 15–30 sekund
    • Unikaj przeprowadzania przechwytywania o wysokiej częstotliwości przez długi czas, ponieważ może to mieć wpływ na wydajność i generować nadmierną ilość danych.

    Ustaw interwał próbkowania w nowym kreatorze zestawu modułów zbierających dane.

  13. Kliknij Następna
  14. Wybierz lokalizację, w której chcesz zapisać dzienniki
    Ustaw lokalizację, w której chcesz zapisać dane dotyczące wydajności w nowym kreatorze zestawu modułów zbierających dane.
  15. Kliknij Zakończ, zostanie utworzony nowy zestaw modułów zbierających dane.
  16. Domyślnie nowy zestaw kolektorów danych będzie NIE zostanie uruchomiony automatycznie. Znajdziesz go w lewym panelu, pod Wydajność -> Zestawy kolektorów danych -> Określony przez użytkownika -> Twój kolektor danych, kliknij go prawym przyciskiem myszy i wybierz Uruchom
    Uruchom nowy zestaw modułów zbierających dane w PerfMon.

4.3 Kluczowe liczniki do dodania

  • Pamięć -> Dostępne MB
  • Dysk fizyczny -> Średnia liczba sekund dysku/odczyt (wszystkie instancje z wyjątkiem _Total)
  • Dysk fizyczny -> Średnia liczba sekund na zapis na dysku (wszystkie instancje z wyjątkiem _Total)
  • Dysk fizyczny -> Odczyty dysku/sek. (wszystkie instancje z wyjątkiem _Total)
  • Dysk fizyczny -> Zapisy na dysku/sek. (wszystkie instancje z wyjątkiem _Total)
  • Procesor -> % czasu procesora (wszystkie instancje z wyjątkiem _Total)
  • SQLServer: Statystyki ogólne -> Połączenia użytkowników
  • SQLServer: Menedżer pamięci -> Oczekujące przyznania pamięci
  • SQLServer: Statystyki SQL -> Żądania wsadowe/sek.
  • SQLServer: Statystyki SQL -> Kompilacje SQL/sek.
  • SQLServer: Statystyki SQL -> Rekompilacje SQL/sek.
  • System -> Długość kolejki procesora

4.4 Ustawianie warunków zatrzymania

Skonfiguruj warunki zatrzymania, aby zapobiec nieograniczonemu wzrostowi danych:

  1. Po utworzeniu zestawu modułów zbierających dane kliknij go prawym przyciskiem myszy i wybierz Właściwości
  2. Kliknij Warunek zatrzymania .
  3. umożliwiać Całkowity czas trwania
  4. Ustaw czas trwania na 1 dzień (24 godziny)
  5. Kliknij OK zapisać

Ustaw warunek zatrzymania dla zestawu kolektora danych

Dzięki temu dziennik nie rozrośnie się za bardzo i będzie automatycznie restartowany, jeśli zaplanowano inaczej.

4.5 Planowanie zbierania danych

Zautomatyzuj zbieranie danych, aby zapewnić spójny monitoring:

  1. Kliknij prawym przyciskiem myszy zestaw modułów zbierających dane i wybierz Właściwości
  2. Kliknij Plan .
  3. Kliknij Dodaj aby utworzyć nowy harmonogram
  4. Skonfiguruj datę i godzinę rozpoczęcia
  5. Ustaw wzór powtarzania (np. codziennie)
  6. Kliknij OK aby zapisać harmonogram

Ustaw harmonogram dla zestawu kolektorów danych

Aby włączyć automatyczne uruchamianie, skonfiguruj zestaw Data Collector Set tak, aby uruchamiał się podczas rozruchu serwera. W tym celu utwórz wyzwalacz uruchamiania w Harmonogramie zadań systemu Windows.

5. Konfigurowanie Monitora wydajności dla SQL Server(Windows XP / Server 2003 i starsze)

W systemach Windows XP / Server 2003 i starszych można tworzyć dzienniki liczników, które umożliwiają wybranie zestawu liczników wydajności i okresowe rejestrowanie ich w pliku.

5.1 Tworzenie dzienników liczników

Aby utworzyć nowy dziennik liczników, wykonaj następujące czynności:

  1. Otwórz Monitor wydajności
  2. Rozszerzać Dzienniki wydajności i alerty w lewym panelu
  3. Kliknij prawym przyciskiem myszy Dzienniki liczników
  4. Wybierz Nowe ustawienia dziennika
  5. Nadaj dziennikowi nazwę, używając nazwy serwera bazy danych (np. „ProductionSQL01”)
  6. Kliknij OK aby rozpocząć konfigurację

Tworzenie oddzielnych dzienników liczników dla każdego serwera umożliwia testowanie wydajności na poszczególnych serwerach bez konieczności jednoczesnego zbierania danych dla wszystkich serwerów.

5.2 Dodawanie liczników wydajności

Po utworzeniu dziennika liczników dodaj konkretne liczniki wydajności, które chcesz monitorować:

  1. Kliknij Dodaj liczniki przycisk
  2. Zmień nazwę komputera tak, aby wskazywała na Twój SQL Server przykład
  3. Naciśnij przycisk zakładka aby załadować dostępne obiekty wydajności
  4. Wybierz obiekt wydajności z listy rozwijanej (np. Pamięć)
  5. Wybierz konkretne liczniki z Lista
  6. Wybierz instancje, jeśli ma to zastosowanie (np. pojedyncze procesory lub dyski)
  7. Kliknij Dodaj aby uwzględnić licznik
  8. Powtórz dla wszystkich żądanych liczników
  9. Kliknij Zamknij gdy zakończono

5.3 Konfigurowanie interwałów próbkowania

Interwał próbkowania określa częstotliwość gromadzenia danych przez Monitor wydajności. Skonfiguruj odpowiednie interwały w zależności od potrzeb monitorowania:

  1. W właściwościach dziennika liczników zlokalizuj Próbka danych co
  2. Ustaw interwał (domyślnie 15 sekund)
  3. W przypadku monitorowania bazowego należy stosować codzienne pobieranie próbek w odstępach 1-minutowych
  4. W celu rozwiązywania problemów należy stosować krótkie serie impulsów w odstępach 15–30 sekund
  5. Kliknij OK aplikować

Pamiętaj, że mniejsze interwały generują więcej danych, które mogą być trudniejsze do renderowania i analizy. Większe interwały mogą pomijać ważne skoki. Zachowaj równowagę między szczegółowością danych a wymaganiami dotyczącymi przechowywania i analizy.

5.4 Konfigurowanie plików dziennika

Prawidłowa konfiguracja pliku dziennika zapewnia wydajne przechowywanie danych i łatwy do nich dostęp:

  1. Kliknij Pliki z logami zakładka we właściwościach dziennika liczników
  2. Zmień typ pliku dziennika na Plik tekstowy (rozdzielony przecinkami) do łatwego importowania z programu Excel
  3. Kliknij Konfigurowanie
  4. Ustaw ścieżkę do pliku w dedykowanej lokalizacji (np. współdzielonym folderze PerformanceLogs)
  5. Kliknij OK potwierdzać

Użyj udostępnionego w sieci miejsca do przechowywania dziennika, dzięki czemu będziesz mieć zdalny dostęp do plików i będziesz mógł udostępniać je innym użytkownikom.

5.5 Konfigurowanie poświadczeń

Skonfiguruj odpowiednie poświadczenia, aby Monitor wydajności mógł uzyskać dostęp do zdalnego SQL Server instancje:

  1. W właściwościach dziennika liczników zlokalizuj Uruchom jako
  2. Wprowadź nazwę użytkownika swojej domeny w formacie: DOMENA\nazwa użytkownika
  3. Kliknij Ustaw hasło
  4. Wprowadź i potwierdź swoje hasło
  5. Kliknij OK zapisać

Dzięki temu usługa PerfMon może zbierać statystyki, wykorzystując uprawnienia domeny, a nie swoje własne dane uwierzytelniające.

6. Analiza danych z Monitora wydajności

6.1 Przeglądanie plików dziennika w Monitorze wydajności

Monitor wydajności może wyświetlać dane historyczne z zapisanych plików dziennika:

  1. Otwórz Monitor wydajności
  2. W lewym okienku kliknij Narzędzia do monitorowania -> monitor wydajności.
  3. Kliknij prawym przyciskiem myszy w dowolnym miejscu obszaru wykresu
  4. Wybierz Właściwości
    Otwórz właściwości w PerfMon, klikając prawym przyciskiem myszy w dowolnym miejscu obszaru wykresu.
  5. Kliknij Źródło  .
  6. Wybierz Pliki dziennika przycisk radiowy
  7. Kliknij Dodaj
  8. Przejdź do pliku dziennika (.blg lub .csv)
  9. Wybierz plik i kliknij Otwórz
    Ustaw plik dziennika jako źródło grafiki w PerfMon.
  10. Użyj Zakres czasu suwakiem wybierz okres, który chcesz analizować
  11. Kliknij OK aby zamknąć okno dialogowe Właściwości
  12. Kliknij zieloną ikonę plusa, aby dodać liczniki z pliku dziennika
    Kliknij zieloną ikonę plusa, aby dodać liczniki z pliku dziennika w PerfMon.
  13. Wybierz żądane liczniki do wyświetlenia
    Dodaj żądane liczniki do grafiki w PerfMon.
  14. Kliknij OK

Wykres będzie teraz wyświetlał dane historyczne z pliku dziennika. Użyj suwaka „Zakres czasu” w oknie Właściwości, aby zawęzić zakres określonych przedziałów czasowych i przeprowadzić szczegółową analizę.

6.2 Eksportowanie danych do programu Excel

Program Excel udostępnia zaawansowane możliwości analizy danych liczników wydajności:

  1. Otwórz Monitor wydajności z załadowanym plikiem dziennika
  2. Kliknij prawym przyciskiem myszy w dowolnym miejscu obszaru wykresu
  3. Wybierz Zapisz dane jako
  4. Wybierz lokalizację pliku
  5. Wybierz Plik tekstowy (rozdzielony przecinkami) (.csv) z listy rozwijanej
  6. Kliknij Zapisz
  7. Otwórz plik CSV w programie Excel

Eksportuj dane do pliku w PerfMon.

Sformatuj wyeksportowane dane, aby umożliwić lepszą analizę:

  1. Usuń półpusty wiersz 2 i wyczyść komórkę A1
  2. Sformatuj kolumnę A jako datę/czas
  3. Formatuj kolumny numeryczne z zerami dziesiętnymi i separatorem tysięcy
  4. Znajdź i zamień nazwy serwerów w nagłówkach (np. zamień „\\SERVERNAME” na puste miejsce)
  5. Wyczyść nazwy obiektów w nagłówkach (np. „Pamięć”, „Dysk fizyczny”, „Procesor”)
  6. Zmniejsz rozmiar czcionki nagłówka do 8 punktów, aby uzyskać lepszą widoczność

6.3 Interpretacja wartości liczników

6.3.1 Analiza licznika pamięci

Analizując liczniki pamięci, zwróć uwagę na następujące wskaźniki:

  • Dostępne MB: Powinno utrzymywać się powyżej 4096 MB na stałym poziomie
  • Długość życia strony: Wartości powyżej 300 sekund wskazują na zdrową pamięć. Niższe wartości sugerują obciążenie pamięci.
  • Współczynnik trafień bufora pamięci podręcznej: Powinien spełniać lub przekraczać 99%. Niższe wartości oznaczają nadmierną liczbę odczytów z dysku.
  • Oczekujące przyznania pamięci: Powinno zawsze wynosić 0. Każda wartość dodatnia oznacza brak pamięci.

6.3.2 Analiza licznika procesora

Wskaźniki wydajności procesora obejmują:

  • % Czas procesora: Długotrwałe użycie powyżej 75% wskazuje na problemy z wydajnością. Skoki do 100% są normalne, ale nie powinny się powtarzać.
  • Długość kolejki procesora: Wartości powyżej 1 oznaczają obciążenie procesora. Sprawdź Menedżera zadań, aby zidentyfikować procesy zużywające zasoby procesora.
  • % Czasu uprzywilejowanego: Powinien mieścić się w przedziale 5–10%. Wartości powyżej 25% sugerują nadmierną liczbę operacji wejścia/wyjścia.

6.3.3 Analiza licznika dysku

Progi wydajności dysku:

  • Średnia liczba sekund na dysku/odczyt i zapis: Powinien utrzymywać się poniżej 10-20 ms. Wyższe wartości wskazują na wolniejsze podsystemy dyskowe.
  • Długość kolejki dyskowej: Wartości stale przekraczające 2 (lub 2 na dysk w RAID) wskazują na wąskie gardła wejścia/wyjścia
  • % Czasu dysku: Utrzymujące się wartości powyżej 85% wskazują na nasycenie dysku

6.4 Korzystanie ze wzorów i statystyk

Dodaj formuły statystyczne do programu Excel w celu szybkiej analizy:

  1. Wstaw 7 pustych wierszy na górze arkusza kalkulacyjnego
  2. Dodaj etykiety w kolumnie A: Średnia, Mediana, Min., Maks., Odchylenie standardowe
  3. W komórce B2 wprowadź: =ŚREDNIA(B9:B100) (dostosuj B100 do ostatniego wiersza danych)
  4. W komórce B3 wpisz: =MEDIANA(B9:B100)
  5. W komórce B4 wpisz: =MIN(B9:B100)
  6. W komórce B5 wpisz: =MAX(B9:B100)
  7. W komórce B6 wpisz: =ODCH.STANDARDOWE(B9:B100)
  8. Kopiuj formuły do ​​wszystkich kolumn liczników
  9. Zaznacz komórkę B9 i naciśnij Alt+W+F+Enter, aby zablokować panele

Statystyki te pomagają identyfikować trendy, wartości odstające i normalne zakresy działania każdego licznika.

7. Narzędzie do analizy wydajności dzienników (PAL)

7.1 Wprowadzenie do PAL

Performance Analysis for Logs (PAL) to bezpłatne narzędzie opracowane przez Clinta Huffmana, które analizuje logi Performance Monitor i generuje raporty HTML z analizą progów. PAL porównuje dane dotyczące wydajności ze znanymi progami i dostarcza szczegółowych rekomendacji. SQL Server optymalizacja wydajności.

Pobierz PAL z repozytorium GitHub: https://github.com/clinthuffman/PAL External Link

7.2 Konfigurowanie PAL

Zainstaluj PAL, wykonując następujące kroki:

  1. Pobierz plik instalacyjny PAL z GitHub
  2. Uruchom instalator
  3. Kliknij Następna na ekranie powitalnym
  4. Przejrzyj i zaakceptuj katalog instalacyjny
  5. Kliknij Następna aby kontynuować
  6. Kliknij Zainstalować aby rozpocząć instalację
  7. Poczekaj na zakończenie instalacji
  8. Kliknij Zakończ

7.3 Przetwarzanie plików dziennika za pomocą PAL

Przeanalizuj dzienniki Monitora wydajności za pomocą protokołu PAL:

  1. Uruchom PAL z menu Start lub katalogu instalacyjnego
  2. Kliknij Dziennik liczników .
  3. Kliknij Przeglądaj aby wybrać plik .blg
  4. Przejdź do pliku dziennika Monitora wydajności
  5. Kliknij Otwórz
  6. Kliknij Plik progowy .
  7. Wybierz plik progowy z listy rozwijanej (np. „SQL Server 2016 ”)
  8. Kliknij Pytania .
  9. Odpowiedz na pytania dotyczące konfiguracji systemu
  10. Określ, czy Twoje SQL Server to OLTP czy magazyn danych
  11. Wprowadź całkowitą dostępną pamięć RAM
  12. Kliknij Opcje wyjściowe .
  13. Wybierz katalog wyjściowy dla raportu HTML
  14. Sprawdź HTML format wyjściowy
  15. Kliknij Wykonać .
  16. Przejrzyj swoje wybory
  17. Sprawdź Rozpocznij wykonywanie teraz
  18. Kliknij Zakończ

7.4 Analiza raportów PAL

Po zakończeniu analizy PAL generuje raport HTML zawierający:

  • Podsumowanie problemów z wydajnością
  • Szczegółowa analiza licznika z wykresami
  • Naruszenia progów zaznaczone kolorem
  • Konkretne zalecenia dla każdego problemu
  • Historyczne trendy i wzorce

W raporcie zastosowano kodowanie kolorami, aby wskazać stopień istotności: czerwony dla problemów krytycznych, żółty dla ostrzeżeń, a zielony dla prawidłowych wskaźników. Przejrzyj każdą sekcję, aby zrozumieć wąskie gardła wydajności i zastosować się do zaleceń PAL dotyczących optymalizacji.

8. Alternatywa SQL Server Narzędzia do monitorowania

Wbudowany 8.1 SQL Server Narzędzia

8.1.1 SQL Server Activity monitor

SQL Server Activity monitor wyświetla informacje w czasie rzeczywistym na temat SQL Server procesy i wydajność:

  1. Otwórz SQL Server Management Studio (SSMS) i połącz się z instancją serwera
  2. Kliknij prawym przyciskiem myszy nazwę serwera w Eksploratorze obiektów
  3. Wybierz Activity monitor
    Uruchom Monitor aktywności w SQL Server Studio Zarządzania.

Monitor aktywności pokazuje procesy, oczekiwanie na zasoby, operacje wejścia/wyjścia plików danych i ostatnie kosztowne zapytania. Zapewnia szybki wgląd w bieżącą aktywność bazy danych, ale nie przechowuje danych historycznych.

Monitor aktywności w SQL Server

8.1.2 SQL Server Panel wydajności

SQL Server Management Studio zawiera wbudowane raporty wydajności:

  1. In SQL Server Management Studio (SSMS), kliknij prawym przyciskiem myszy SQL Server wystąpienie w Eksploratorze obiektów
  2. Wybierz Raporty -> Raporty standardowe
  3. Wybierz spośród dostępnych raportów, takich jak Panel wydajności
    Otwórz Panel wydajności w SQL Server Studio Zarządzania.

Panel wydajności zapewnia wizualny wgląd w SQL Server Wydajność instancji, w tym wykorzystanie procesora systemu, bieżące oczekujące żądania i metryki wydajności. Dostęp do nich można uzyskać w menu Raporty standardowe.

Panel wydajności w SQL Server Studio zarządzania

8.1.3 SQL Server Profiler

SQL Server Profiler przechwytuje i analizuje SQL Server zdarzenia takie jak wykonywanie zapytań, operacje transakcyjne i czynności logowania.

Aby rozpocząć SQL Server profiler:

  1. In SQL Server Management Studio, kliknij Narzędzia -> SQL Server Profiler
    Uruchom SQL Server Profiler w SQL Server Studio Zarządzania.

Profiler generuje znaczny narzut wydajnościowy, dlatego należy go używać rozważnie i najlepiej poza godzinami szczytu. W większości scenariuszy funkcja Extended Events zapewnia lepszą wydajność przy mniejszym wpływie na wydajność.

SQL Server Profiler

8.1.4 Wydarzenia rozszerzone

Rozszerzone wydarzenia jest lekkim systemem monitorowania wydajności wbudowanym w SQL Server. Zastępuje SQL Server Profiler o lepszej wydajności i mniejszym obciążeniu.

Najważniejsze cechy to:

  • Szczegółowe monitorowanie określonych zdarzeń
  • Minimalny wpływ na wydajność
  • Sesje wydarzeń dostosowywane do indywidualnych potrzeb
  • Integracja z SSMS i innymi narzędziami
  • Obsługa złożonego filtrowania i agregacji

Utwórz sesje rozszerzonych zdarzeń za pomocą SSMS:

  1. In Eksplorator obiektów, rozszerz swój serwer i przejdź do Zarządzanie -> Wydarzenia rozszerzone -> Sesje
  2. Kliknij prawym przyciskiem myszy Sesji i wybierz Kreator nowej sesji
    Rozpocznij nową sesję rozszerzonych wydarzeń w SQL Server Studio Zarządzania.
  3. Postępuj zgodnie z instrukcjami, aby rozpocząć nową sesję.

8.1.5 Dynamiczne widoki zarządzania (DMV)

DMV udostępniają szczegółowe informacje o stanie serwera, umożliwiające monitorowanie jego stanu, diagnozowanie problemów i optymalizację wydajności. Kluczowe DMV obejmują:

  • sys.dm_exec_query_stats: Statystyki wydajności zapytań
  • sys.dm_os_wait_stats: Typy oczekiwania wpływające na wydajność serwera
  • sys.dm_os_performance_counters: SQL Server dane licznika wydajności
  • sys.dm_exec_requests: Aktualnie wykonywane żądania
  • sys.dm_exec_sessions: Aktywne sesje użytkowników

Wykonuj zapytania w tych widokach przy użyciu języka T-SQL, aby uzyskać dostęp do danych o wydajności w czasie rzeczywistym i metryk historycznych.

Podstawowe użycie

-- See all active connections
SELECT * FROM sys.dm_exec_connections;

-- View current sessions
SELECT * FROM sys.dm_exec_sessions;

-- Check database file stats
SELECT * FROM sys.dm_io_virtual_file_stats(NULL, NULL);

8.2 Rozwiązania monitorujące innych firm

Monitor SQL Redgate

Redgate SQL Monitor specjalizuje się w monitorowaniu SQL Server i środowiskach Azure SQL Database. Zapewnia monitorowanie całej infrastruktury, konfigurowalne alerty i pulpity nawigacyjne, szczegółowe funkcje raportowania oraz integrację z innymi narzędziami Redgate.

Redgate SQL Server Monitorowanie

SolarWinds SQL Server Narzędzie do monitorowania

SolarWinds SQL Server Narzędzie monitorujące, znane również jako SQL Sentry, służy do diagnozowania, rozwiązywania i zapobiegania poważnym problemom z wydajnością SQL Server.

SolarWinds SQL Server Narzędzie do monitorowania

IDERA SQL Server Narzędzie do monitorowania wydajności

IDERA SQL Diagnostic Manager to potężne narzędzie SQL Server Narzędzie do monitorowania wydajności, zaprojektowane z myślą o pomocy w proaktywnym monitorowaniu, diagnostyce i dostrajaniu wydajności.

IDERA SQL Server Narzędzie do monitorowania wydajności

Monitorowanie SQL Menedżera Aplikacji

Menedżer aplikacji oferuje Microsoft SQL Server Narzędzie monitorujące dostarczające przydatnych rozwiązań informatycznych. Został zaprojektowany, aby nadzorować wydajność baz danych SQL, jednocześnie identyfikując błędy i rozwiązując problemy, które mogą prowadzić do przestojów w działaniu organizacji.

Monitorowanie SQL w Menedżerze Aplikacji

8.3 Narzędzia do monitorowania oprogramowania typu open source

DBA Dash

DBA Dash to bezpłatne, otwarte narzędzie do monitorowania, które zapewnia wgląd w SQL Server Stan, wydajność i aktywność. Jest szczególnie przydatny w małych i średnich środowiskach i obejmuje codzienne kontrole administratorów baz danych, monitorowanie wydajności i śledzenie konfiguracji.

SQLWATCH

SQLWATCH oferuje zdecentralizowane, niemal w czasie rzeczywistym SQL Server Monitorowanie z dokładnością do 5 sekund w celu rejestrowania skoków obciążenia. Obsługuje platformę Grafana do obsługi pulpitów nawigacyjnych w czasie rzeczywistym oraz Power BI do dogłębnej analizy. Narzędzie oferuje rozbudowane opcje konfiguracji, zerowe wymagania konserwacyjne i nieograniczoną skalowalność.

Serwer operacyjny

Opracowany przez Stack Exchange, Opserver monitoruje wiele systemów, w tym SQL Server, Redis i Elasticsearch. Zapewnia widok „wszystkich serwerów” dla statystyk procesora, pamięci, sieci i sprzętu w całej infrastrukturze.

sp_WhoIsActive

sp_WhoIsActive to kompleksowa procedura składowana do monitorowania aktywności stworzona przez Adama Machanica. Działa ze wszystkimi SQL Server wersje od 2005 roku aż do obecnych wydań i jest szeroko stosowany przez SQL Server Administratorzy baz danych do monitorowania aktywności w czasie rzeczywistym.

Aby użyć sp_WhoIsActive, pobierz go ze strony http://whoisactive.com/, zainstaluj w swojej bazie danych i wykonaj polecenie:

EXEC sp_WhoIsActive

Procedura pokazuje aktualnie wykonywane zapytania, informacje o oczekiwaniu, szczegóły blokowania i zużycie zasobów.

9. Najlepsze praktyki dot SQL Server monitor wydajności

9.1 Ustalanie bazowych poziomów wydajności

Linie bazowe wydajności wyznaczają normalne parametry operacyjne dla Twojego SQL Server Bez danych bazowych nie można określić, czy obecne wskaźniki wskazują na problemy, czy reprezentują typowe zachowania.

Utwórz linie bazowe poprzez:

  1. Zbieranie danych dotyczących wydajności podczas normalnych operacji przez co najmniej tydzień
  2. Rejestrowanie danych w godzinach szczytu i poza szczytem
  3. Dokumentowanie typowych wartości dla liczników kluczowych
  4. Rejestrowanie zmian sezonowych, jeśli ma to zastosowanie
  5. Przechowywanie danych bazowych w celu porównania z przyszłymi metrykami

Aktualizuj dane bazowe kwartalnie lub po wprowadzeniu istotnych zmian w infrastrukturze, aktualizacji aplikacji lub modyfikacji bazy danych.

9.2 Ustawianie odpowiednich progów alertów

Skonfiguruj inteligentne progi, aby otrzymywać wartościowe alerty bez przytłaczania się powiadomieniami:

  • Oczekujące przyznania pamięci > 0 oznacza obciążenie pamięci
  • Długość kolejki procesora > 2 na rdzeń sugeruje wąskie gardło procesora
  • Dysk s/Odczyt lub zapis > 20 ms oznacza wolne wejście/wyjście
  • Zablokowane procesy > 5 sygnałów problemów z konfliktem
  • Długość życia strony < 300 sekund wskazuje na obciążenie pamięci

Dostosuj progi na podstawie danych bazowych i specyficznych cech obciążenia. Używaj progów adaptacyjnych, które uwzględniają typowe odchylenia w Twoim środowisku.

9.3 Regularny przegląd i analiza danych

Zaplanuj regularne oceny wyników, aby zidentyfikować trendy i pojawiające się problemy:

  • Codziennie: przeglądaj wskaźniki wysokiego poziomu i ostatnie alerty
  • Tygodniowo: Przeprowadź szczegółową analizę trendów wydajności
  • Miesięcznie: Generuj kompleksowe raporty i porównuj je z danymi bazowymi
  • Kwartalnie: Przegląd planowania pojemności i długoterminowych trendów

Dokumentuj ustalenia i śledź poprawę wydajności na przestrzeni czasu.

9.4 Monitorowanie równoważenia obciążenia

Samo monitorowanie pochłania zasoby, dlatego należy zachować równowagę między gromadzeniem danych a wpływem na wydajność:

  • Do ciągłego monitorowania stosuj interwały 30–60 sekundowe
  • Używaj 15-sekundowych interwałów wyłącznie w celu aktywnego rozwiązywania problemów
  • Ogranicz czas trwania ustawienia modułu zbierającego dane, aby uniknąć nadmiaru danych
  • Przechowuj dzienniki na oddzielnych dyskach od plików bazy danych
  • Archiwizuj stare dane dotyczące wydajności, aby zachować rozmiary plików, które można zarządzać

Prawidłowo skonfigurowany Monitor wydajności generuje minimalne obciążenie, zazwyczaj poniżej 2% zasobów systemowych.

9.5 Długoterminowe przechowywanie danych

Zachowaj dane dotyczące wydajności, aby móc przeprowadzać wartościowe analizy trendów i planować wydajność:

  • Zachowaj co najmniej 1-2 lata danych dotyczących wydajności
  • Archiwizuj dane w oddzielnym magazynie po 3–6 miesiącach
  • Kompresuj starsze pliki dziennika, aby zaoszczędzić miejsce
  • Dokumentuj wszystkie istotne zdarzenia lub zmiany mające wpływ na wydajność

Biorąc pod uwagę stosunkowo niewielki rozmiar danych licznika wydajności, przechowywanie ich na czas nieokreślony jest często wykonalne i wartościowe w przypadku analiz długoterminowych.

9.6 Integracja z praktykami DevOps

Zintegruj monitorowanie wydajności bazy danych z procesami CI/CD:

  • Uwzględnij metryki wydajności bazy danych podczas walidacji wdrożenia
  • Zautomatyzuj testy wydajności nowych wydań
  • Sprawdź, czy zmiany kodu nie mają negatywnego wpływu na wydajność
  • Utwórz testy wydajności dla każdej wersji
  • Zintegruj alerty monitorujące z systemami zarządzania incydentami

10. Rozwiązywanie typowych problemów z wydajnością

10.1 Identyfikacja wąskich gardeł procesora

Wąskie gardła procesora objawiają się długim czasem odpowiedzi na zapytania i wysokim obciążeniem procesora. Aby zdiagnozować problemy z procesorem, wykonaj następujące kroki:

  1. Sprawdź licznik długości kolejki procesora. Wartości powyżej 2 na rdzeń wskazują na obciążenie procesora.
  2. Sprawdź % czasu procesora. Utrzymujące się wartości powyżej 75% sugerują wąskie gardło procesora.
  3. Zdalny pulpit do SQL Server
  4. Otwórz Menedżera zadań (Ctrl+Shift+Esc)
  5. Kliknij Procesy .
  6. Sprawdź Pokaż procesy wszystkich użytkowników
  7. Kliknij CPU nagłówek kolumny do sortowania według użycia procesora
  8. Określ, które procesy zużywają zasoby procesora

Jeśli nie-SQL Server Aplikacje zużywają znaczną ilość zasobów procesora, usuń je z serwera bazy danych. Jeśli sqlservr.exe intensywnie wykorzystuje zasoby procesora, sprawdź to, stosując następujące metody:

  • Sprawdź kompilacje SQL/s i rekompilacje SQL/s. Wartości powyżej 10% żądań wsadowych/s wskazują na nadmierną kompilację.
  • Zapytanie sys.dm_exec_query_stats w celu zidentyfikowania zapytań intensywnie wykorzystujących procesor
  • Przejrzyj plany wykonania pod kątem brakujących indeksów lub nieefektywnych operacji
  • Rozważ dodanie indeksów, aby zmniejszyć liczbę skanów tabel

10.2 Diagnozowanie problemów z pamięcią

Problemy z pamięcią mają znaczący wpływ SQL Server wydajność. Diagnozuj problemy z pamięcią za pomocą następujących wskaźników:

Dostępna pamięć

Jeśli liczba dostępnych MB stale spada poniżej 100 MB, system operacyjny staje w obliczu niedoboru pamięci. System Windows może wymusić stronicowanie. SQL Server pamięci na dysk, powodując obniżenie wydajności.

Niska oczekiwana żywotność strony

Oczekiwana długość życia strony poniżej 300 sekund wskazuje na wysoki poziom rotacji bufora pamięci podręcznej. Sugeruje to albo niewystarczającą alokację pamięci, albo nadmierne obciążenie pamięci przez zapytania.

Niski współczynnik trafień w buforze pamięci podręcznej

Współczynnik trafień bufora pamięci podręcznej poniżej 99% oznacza SQL Server często odczytuje dane z dysku, a nie z pamięci. Dzieje się tak, gdy pula buforów jest zbyt mała lub SQL Server nadal się rozgrzewa po ponownym uruchomieniu.

Oczekiwanie na przyznanie pamięci

Każda wartość powyżej 0 w polu „Oczekujące przydziały pamięci” oznacza, że ​​zapytania oczekują na przydział pamięci. Oznacza to krytyczny niedobór pamięci wymagający natychmiastowej reakcji.

Aby rozwiązać problemy z pamięcią:

  1. Konfigurowanie SQL Server maksymalne ustawienie pamięci, aby pozostawić odpowiednią ilość pamięci RAM dla systemu operacyjnego (zwykle 4-8 GB w zależności od rozmiaru serwera)
  2. Włącz uprawnienie „Blokowanie stron w pamięci” dla SQL Server konto usługi
  3. Jeśli nadal występuje problem z pamięcią, dodaj do serwera więcej pamięci fizycznej.
  4. Identyfikuj i optymalizuj zapytania wymagające dużej ilości pamięci

10.3 Rozwiązywanie problemów z wejściem/wyjściem dysku

Operacje wejścia/wyjścia na dysku często stają się głównym wąskim gardłem wydajności w systemach baz danych. Diagnozuj problemy z dyskiem za pomocą następujących metod:

Wysoka długość kolejki dyskowej

Długość kolejki dyskowej stale przekraczająca 2 (lub 2 na dysk w przypadku RAID) oznacza, że ​​podsystem dyskowy nie nadąża za żądaniami wejścia/wyjścia. Powoduje to zaległość w oczekujących operacjach.

Nadmierne opóźnienie dysku

Wartości średnie s/odczyt i s/zapis powyżej 10–20 ms wskazują na powolną reakcję dysku. Dyski z dziennikiem transakcji wymagają szczególnie dużej wydajności, najlepiej poniżej 5 ms dla zapisu.

Wysoki % czasu dysku

Utrzymujący się % Czasu Dysku powyżej 85% wskazuje na nasycenie dysku. Dysk spędza większość czasu na przetwarzaniu żądań wejścia/wyjścia, a pozostała wolna przestrzeń jest niewielka.

Przed zajęciem się problemami z dyskiem, sprawdź, czy nie są one objawami problemów z pamięcią. Niedobór pamięci wymusza SQL Server aby odczytać więcej danych z dysku, sztucznie zawyżając metryki dysku.

Aby rozwiązać rzeczywiste problemy z wejściem/wyjściem dysku:

  • Przejdź na szybsze dyski (dyski SSD zamiast HDD)
  • Wdrażaj konfiguracje RAID w celu uzyskania lepszej wydajności
  • Oddziel pliki bazy danych, dzienniki transakcji i tempdb na różnych dyskach fizycznych
  • Dodaj więcej pamięci, aby zmniejszyć liczbę odczytów z dysku
  • Zoptymalizuj indeksy, aby zmniejszyć niepotrzebne operacje wejścia/wyjścia
  • Przejrzyj i zoptymalizuj zapytania o niskiej wydajności

10.4 Rozwiązywanie problemów z blokowaniem i blokadami

Blokowanie występuje, gdy jedna sesja utrzymuje blokady uniemożliwiające kontynuację innych sesji. Monitoruj te liczniki, aby zidentyfikować problemy z blokowaniem:

  • Zablokowane procesy: Idealnie powinno być 0
  • Oczekiwania na blokadę/sek.: Liczba żądań blokady wymagających oczekiwania
  • Średni czas oczekiwania: Średni czas oczekiwania na blokadę

Aby zbadać blokowanie:

  1. Otwórz Monitor aktywności w SSMS
  2. rozwiń Procesy Sekcja
  3. Szukaj procesów z wartością różną od zera Zablokowany przez wartości
  4. Zidentyfikuj identyfikator sesji blokującej
  5. Przejrzyj zapytania powodujące blokowanie

Użyj sp_WhoIsActive do bardziej szczegółowej analizy blokowania. Nadmierna liczba wpisów wait_info często wskazuje na konflikt tempdb lub problemy z blokowaniem.

Aby zmniejszyć blokowanie:

  • Zminimalizuj czas trwania transakcji
  • Stosuj odpowiednie poziomy izolacji
  • Dodaj indeksy, aby skrócić czas trwania blokady
  • Rozważ izolację READ_COMMITTED_SNAPSHOT
  • Przeglądanie i optymalizacja długotrwałych zapytań

10.5 Problemy z wydajnością zapytań

Identyfikacja kosztownych zapytań jest niezbędna do monitorowania wydajności SQL. Użyj tych metod, aby znaleźć problematyczne zapytania:

Korzystanie z Monitora aktywności

  1. W SSMS kliknij prawym przyciskiem myszy nazwę serwera
  2. Wybierz Activity monitor
  3. Rozszerzać Ostatnie drogie zapytania
  4. Przeglądaj zapytania wymagające dużej mocy obliczeniowej procesora, długiego czasu trwania lub odczytów logicznych

Korzystanie z DMV

Wykonaj zapytanie sys.dm_exec_query_stats, aby zidentyfikować zapytania wymagające dużej ilości zasobów:

SELECT TOP 50
    total_worker_time/execution_count AS avg_cpu_time,
    total_logical_reads/execution_count AS avg_logical_reads,
    execution_count,
    SUBSTRING(qt.text, (qs.statement_start_offset/2)+1,
        ((CASE qs.statement_end_offset
            WHEN -1 THEN DATALENGTH(qt.text)
            ELSE qs.statement_end_offset
        END - qs.statement_start_offset)/2) + 1) AS query_text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY total_worker_time DESC

Analiza planów wykonania

  1. W SSMS otwórz nowe okno zapytania
  2. Kliknij Wyświetl szacowany plan wykonania (Ctrl+L) lub Uwzględnij rzeczywisty plan wykonania (Ctrl+M)
  3. Wykonaj swoje zapytanie
  4. Przejrzyj plan wykonania kosztownych operacji
  5. Szukaj skanów tabel, skanów indeksów lub operacji o wysokich kosztach

Optymalizuj zapytania poprzez:

  • Dodawanie odpowiednich indeksów
  • Przepisywanie zapytań w celu uniknięcia kosztownych operacji
  • Aktualizacja statystyk
  • Używanie konkretnych nazw kolumn zamiast SELECT *
  • Unikanie niepotrzebnych klauzul DISTINCT lub ORDER BY

10.6 Wykrywanie i naprawa uszkodzonej bazy danych

Uszkodzenie bazy danych może spowodować spadek wydajności, utratę danych i awarie systemu. Szybkie wykrywanie i usuwanie uszkodzeń ma kluczowe znaczenie dla utrzymania prawidłowego działania bazy danych.

Wskaźniki uszkodzenia bazy danych

Zwróć uwagę na poniższe oznaki potencjalnej korupcji:

  • Komunikaty o błędach w SQL Server dziennik błędów (błąd 823, 824 lub 825)
  • Nieoczekiwane błędy aplikacji podczas uzyskiwania dostępu do określonych tabel
  • Powolna wydajność zapytań w przypadku wcześniej szybkich zapytań
  • SQL Server awarie lub nieoczekiwane ponowne uruchomienia
  • Podejrzane strony pojawiające się w tabeli msdb.dbo.suspect_pages

Używanie DBCC CHECKDB do wykrywania

DBCC CHECKDB to podstawowe narzędzie do wykrywania uszkodzeń bazy danych. Uruchamiaj je regularnie, aby wcześnie wykryć problemy.

Monitorowanie podejrzanych stron

SQL Server automatycznie rejestruje podejrzane strony w bazie danych msdb:

SELECT 
    database_id,
    file_id,
    page_id,
    event_type,
    error_count,
    last_update_date
FROM msdb.dbo.suspect_pages
WHERE event_type IN (1,2,3)

Wszystkie zwrócone wiersze wskazują na problemy z korupcją wymagające natychmiastowej uwagi.

Strategie zapobiegania korupcji

  • Włącz weryfikację strony za pomocą opcji CHECKSUM
  • Regularnie twórz kopie zapasowe bazy danych
  • Używaj niezawodnego sprzętu z korekcją błędów
  • Monitoruj stan dysku za pomocą narzędzi producenta
  • Zaplanuj regularne uruchomienia DBCC CHECKDB
  • Trzymać SQL Server zaktualizowano o najnowsze poprawki

Opcje odzyskiwania i naprawy

Jeśli zostaną wykryte uszkodzenia, możesz wypróbować wbudowane narzędzie DBCC CHECKDB aby je naprawić. Jeśli się nie uda, skorzystaj z narzędzi innych firm, takich jak DataNumen SQL Recovery które mogą uporać się z poważnymi przypadkami korupcji.

11. Zaawansowane techniki monitorowania

11.1 Monitorowanie magazynu zapytań

Magazyn zapytań wprowadzony w SQL Server 2016 automatycznie rejestruje dane dotyczące wydajności zapytań. Zapewnia cenne informacje na temat zachowania zapytań, planów wykonania i trendów wydajności.

Włączanie magazynu zapytań

  1. W Eksploratorze obiektów SSMS kliknij prawym przyciskiem myszy bazę danych
  2. Wybierz Właściwości
  3. Kliknij Sklep zapytań strona
  4. In Tryb działania (żądany), Wybierz Czytaj Napisz
  5. W razie potrzeby skonfiguruj dodatkowe ustawienia
  6. Kliknij OK

Monitorowanie wydajności zapytań

Dostęp do raportów Query Store za pośrednictwem Eksploratora obiektów:

  1. Rozszerz bazę danych w Eksploratorze obiektów
  2. Rozszerzać Sklep zapytań
  3. Wybierz z dostępnych raportów:
    • Zapytania regresywne
    • Całkowite zużycie zasobów
    • Zapytania o największym zużyciu zasobów
    • Zapytania z wymuszonymi planami
    • Śledzone zapytania

Wykrywanie regresji planu

Magazyn zapytań automatycznie wykrywa zmiany planów wykonywania zapytań i spadek wydajności. Przejrzyj raport „Zapytania z regresją”, aby zidentyfikować zapytania, na które wpłynęły zmiany planów.

Wymuszone zarządzanie planem

Gdy magazyn zapytań zidentyfikuje lepszy plan wykonania, wymuś SQL Server jak z tego korzystać:

  1. Otwórz zapytanie w magazynie zapytań
  2. Kliknij prawym przyciskiem myszy wybrany plan
  3. Wybierz Plan siłowy

Dzięki temu wydajność ulega natychmiastowej poprawie, bez konieczności wprowadzania zmian w kodzie.

11.2 Monitorowanie konserwacji indeksu

Fragmentacja indeksu pogarsza wydajność zapytań w miarę upływu czasu. Regularnie monitoruj i utrzymuj indeksy, aby zapewnić optymalną wydajność.

Sprawdzanie fragmentacji

Użyj tego zapytania, aby sprawdzić fragmentację indeksu:

SELECT 
    OBJECT_NAME(i.object_id) AS table_name,
    i.name AS index_name,
    ps.avg_fragmentation_in_percent,
    ps.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ps
INNER JOIN sys.indexes i ON ps.object_id = i.object_id 
    AND ps.index_id = i.index_id
WHERE ps.avg_fragmentation_in_percent > 10
    AND ps.page_count > 1000
ORDER BY ps.avg_fragmentation_in_percent DESC

Uruchom to zapytanie poza godzinami szczytu, ponieważ może ono wymagać dużej ilości zasobów.

Analiza gęstości stron

Gęstość stron wskazuje, jak pełne są strony indeksowe. Niska gęstość marnuje miejsce i obniża wydajność:

SELECT 
    OBJECT_NAME(i.object_id) AS table_name,
    i.name AS index_name,
    ps.avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ps
INNER JOIN sys.indexes i ON ps.object_id = i.object_id 
    AND ps.index_id = i.index_id
WHERE ps.avg_page_space_used_in_percent < 75

Decyzje dotyczące reorganizacji i odbudowy

Wybierz operacje utrzymania indeksu na podstawie poziomów fragmentacji:

  • Fragmentacja 10-30%: Użyj ALTER INDEX REORGANIZE
  • Fragmentacja > 30%: Użyj ALTER INDEX REBUILD
  • Fragmentacja < 10%: brak konieczności podejmowania działań

Operacje reorganizacji wymagają mniej zasobów i mogą być przeprowadzane online. Operacje odbudowy są bardziej dokładne, ale pochłaniają znaczne zasoby.

11.3 Aktualizacje statystyk bazy danych

Pomoc dotycząca statystyk bazy danych SQL ServerOptymalizator zapytań tworzy efektywne plany wykonania. Nieaktualne statystyki prowadzą do niskiej wydajności zapytań.

Automatyczne przebudowywanie statystyk

Włącz automatyczną aktualizację statystyk:

ALTER DATABASE DatabaseName SET AUTO_UPDATE_STATISTICS ON
ALTER DATABASE DatabaseName SET AUTO_CREATE_STATISTICS ON

Monitorowanie statystyk zdrowia

Sprawdź, kiedy statystyki były ostatnio aktualizowane:

SELECT 
    OBJECT_NAME(s.object_id) AS TableName,
    s.name AS StatisticsName,
    STATS_DATE(s.object_id, s.stats_id) AS LastUpdated,
    sp.rows,
    sp.modification_counter
FROM sys.stats s
CROSS APPLY sys.dm_db_stats_properties(s.object_id, s.stats_id) sp
WHERE STATS_DATE(s.object_id, s.stats_id) < DATEADD(DAY, -7, GETDATE())
ORDER BY LastUpdated

Ręczna aktualizacja statystyk w razie potrzeby:

UPDATE STATISTICS TableName WITH FULLSCAN

11.4 Zbieranie niestandardowych danych o wydajności

Twórz niestandardowe rozwiązania do monitorowania wydajności, bezpośrednio wysyłając zapytania do sys.dm_os_performance_counters i przechowując wyniki w tabelach.

Tworzenie niestandardowych skryptów kolekcji

Zbuduj procedurę składowaną w celu zbierania danych licznika wydajności:

CREATE PROCEDURE dbo.CollectPerformanceCounters
AS
BEGIN
    INSERT INTO dbo.PerformanceHistory (
        SampleTime,
        CounterName,
        CounterValue
    )
    SELECT 
        GETDATE(),
        counter_name,
        cntr_value
    FROM sys.dm_os_performance_counters
    WHERE counter_name IN (
        'Page life expectancy',
        'Batch Requests/sec',
        'Buffer cache hit ratio'
    )
END

Korzystanie z sys.dm_os_performance_counters

Bezpośrednie zapytanie o liczniki wydajności:

SELECT 
    object_name,
    counter_name,
    instance_name,
    cntr_value,
    cntr_type
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%Buffer Manager%'
ORDER BY counter_name

Przechowywanie danych historycznych

Utwórz tabelę do przechowywania metryk wydajności na przestrzeni czasu:

CREATE TABLE dbo.PerformanceHistory (
    ID INT IDENTITY PRIMARY KEY,
    SampleTime DATETIME2 NOT NULL,
    PageLifeExpectancy BIGINT,
    BatchRequestsPerSec DECIMAL(18,4),
    BufferCacheHitRatio DECIMAL(5,2)
)

CREATE CLUSTERED COLUMNSTORE INDEX CCI_PerformanceHistory 
ON dbo.PerformanceHistory

Obrotowe metody przechowywania danych

Przechowuj dane w formacie przestawnym, z jednym wierszem na czas próby i jedną kolumną na licznik. Pozwala to zmniejszyć przestrzeń dyskową i poprawić wydajność zapytań w porównaniu z przechowywaniem jednego wiersza na licznik na próbkę.

11.5 Monitorowanie wielu serwerów

Do środowisk z wieloma SQL Server wystąpieniach, wdrożono scentralizowany monitoring.

Centralne podejście do monitorowania

  • Utwórz dedykowaną bazę danych monitorującą na osobnym serwerze
  • Zbierz dane ze wszystkich serwerów do centralnego repozytorium
  • Użyj SQL Server Zadania agenta do uruchamiania skryptów kolekcji
  • Wdrożenie zbioru liczników wydajności dostępnego przez sieć

Zdalne monitorowanie serwera

Skonfiguruj Monitor wydajności do zbierania danych z serwerów zdalnych, określając nazwy serwerów podczas dodawania liczników. Upewnij się, że reguły zapory zezwalają na ruch Monitora wydajności.

Raportowanie międzyserwerowe

Twórz raporty porównujące wydajność wielu serwerów w celu identyfikacji elementów odstających od normy i nierównowagi pojemności.

12. Monitorowanie SQL Server w środowiskach chmurowych

12.1 Monitorowanie bazy danych Azure SQL

Usługa Azure SQL Database zapewnia wbudowane możliwości monitorowania, które różnią się od możliwości lokalnych SQL Server.

Integracja z Azure Monitor

Usługa Azure Monitor automatycznie zbiera metryki z bazy danych Azure SQL Database, w tym:

  • Wykorzystanie DTU lub vCore
  • Wykorzystanie bagażu
  • Statystyki połączeń
  • Blokady i przekroczenia limitu czasu

Dostęp do tych metryk można uzyskać za pośrednictwem portalu Azure lub interfejsu API usługi Azure Monitor.

Wbudowane funkcje monitorowania

Baza danych Azure SQL obejmuje:

  • Automatyczne zalecenia dotyczące dostrajania
  • Wgląd w wydajność zapytania
  • Inteligentne spostrzeżenia do wykrywania anomalii
  • Wbudowane alerty i diagnostyka

Wgląd w wydajność zapytania

Ta funkcja umożliwia wizualizację zapytań najbardziej obciążających zasoby, analizę czasu trwania zapytań oraz historyczne trendy wydajności. Dostęp do niej można uzyskać za pośrednictwem portalu Azure w ramach zasobu bazy danych SQL.

12.2 Narzędzia do monitorowania w chmurze

Platformy chmurowe oferują natywne rozwiązania do monitorowania zoptymalizowane pod kątem ich środowisk:

  • Azure Monitor i Application Insights dla bazy danych Azure SQL
  • AWS CloudWatch dla RDS SQL Server
  • Monitorowanie Google Cloud dla chmury SQL Server

Narzędzia te płynnie integrują się z infrastrukturą chmurową i umożliwiają ujednolicone monitorowanie wszystkich zasobów chmurowych.

Monitorowanie środowiska hybrydowego

W przypadku wdrożeń hybrydowych obejmujących środowisko lokalne i chmurę należy używać narzędzi obsługujących oba środowiska, takich jak Redgate SQL Monitor, SolarWinds DPA lub rozwiązań niestandardowych wykorzystujących scentralizowane gromadzenie danych.

12.3 Różnice w wydajności w chmurze

Chmura SQL Server środowiska mają unikalne cechy:

Modele alokacji zasobów

Dostawcy usług chmurowych stosują różne metody alokacji zasobów (DTU, rdzenie wirtualne, rozwiązania bezserwerowe), które wpływają na sposób interpretacji metryk wydajności. Poznaj ograniczenia i charakterystykę swojego poziomu usług.

Rozważania dotyczące skalowania

Środowiska chmurowe oferują możliwości dynamicznego skalowania. Monitoruj wykorzystanie zasobów, aby określić, kiedy skalować w górę lub w dół. Wiele platform chmurowych oferuje automatyczne skalowanie w oparciu o progi wydajności.

13. Automatyzacja monitorowania wydajności

13.1 SQL Server Praca agenta

Zautomatyzuj zbieranie danych za pomocą SQL Server Zadania agentów umożliwiające stałe monitorowanie bez konieczności ręcznej interwencji.

Zaplanowane gromadzenie danych

  1. W SSMS rozwiń SQL Server Agent
  2. Kliknij prawym przyciskiem myszy Oferty pracy na której: Nowa praca
  3. Nazwij zadanie (np. „Zbieranie danych o wydajności”)
  4. Kliknij Cel i dodaj nowy krok
  5. Ustaw typ na Skrypt Transact-SQL
  6. Wprowadź skrypt zbierania danych
  7. Kliknij Harmonogramy i dodaj harmonogram
  8. Skonfiguruj częstotliwość (np. co 5 minut)
  9. Kliknij OK stworzyć pracę

Automatyczne raportowanie

Utwórz zadania generujące raporty wydajności i wysyłające je e-mailem:

  1. Utwórz procedurę składowaną generującą raporty
  2. Użyj usługi Database Mail do wysyłania raportów e-mailem
  3. Zaplanuj wykonywanie zadania codziennie lub co tydzień

13.2 Automatyzacja programu PowerShell

PowerShell zapewnia potężne możliwości automatyzacji SQL Server monitor wydajności.

Skrypty kolekcji liczników wydajności

$counters = @(
    '\Processor(_Total)\% Processor Time',
    '\Memory\Available MBytes',
    '\PhysicalDisk(_Total)\Avg. Disk sec/Read'
)

$data = Get-Counter -Counter $counters -ComputerName 'SQLServer01'
$data.CounterSamples | Export-Csv 'C:\PerfLogs\counters.csv' -Append

Zapytania WMI

Użyj WMI do zbierania danych o wydajności ze zdalnych serwerów:

$cpu = Get-WmiObject Win32_Processor -ComputerName 'SQLServer01'
$memory = Get-WmiObject Win32_OperatingSystem -ComputerName 'SQLServer01'

Write-Host "CPU Usage: $($cpu.LoadPercentage)%"
Write-Host "Available Memory: $([math]::Round($memory.FreePhysicalMemory/1MB,2)) GB"

Automatyczne alerty

Utwórz skrypty programu PowerShell, które sprawdzają metryki i wysyłają alerty w przypadku przekroczenia progów:

$cpuThreshold = 80
$cpu = (Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue

if ($cpu -gt $cpuThreshold) {
    Send-MailMessage -To 'dba@company.com' -Subject 'High CPU Alert' `
        -Body "CPU usage is $cpu%" -SmtpServer 'smtp.company.com'
}

13.3 Tworzenie pulpitów monitorujących

Wizualizuj dane dotyczące wydajności za pomocą interaktywnych pulpitów nawigacyjnych, aby uzyskać lepszy wgląd.

Integracja z Power BI

  1. Połącz usługę Power BI z tabelami danych dotyczących wydajności
  2. Twórz wizualizacje kluczowych wskaźników
  3. Dodaj slicery do wyboru zakresu czasu i serwera
  4. Publikuj pulpity nawigacyjne w usłudze Power BI
  5. Skonfiguruj harmonogramy automatycznego odświeżania

Tworzenie pulpitu nawigacyjnego w czasie rzeczywistym

Użyj narzędzi takich jak Grafana lub niestandardowych aplikacji internetowych, aby tworzyć pulpity nawigacyjne w czasie rzeczywistym, które bezpośrednio wysyłają zapytania do wskaźników DMV i liczników wydajności.

Wizualizacja trendów historycznych

Tworzenie wykresów liniowych pokazujących trendy w czasie dla:

  • Zużycie procesora
  • Zużycie pamięci
  • Disk I / O
  • Wydajność zapytania
  • Liczba połączeń

14. Studia przypadków i przykłady praktyczne

14.1 Studium przypadku: Rozwiązywanie problemu obciążenia pamięci

Identyfikacja objawu

Produkcja SQL Server Użytkownicy zgłaszali długi czas odpowiedzi na zapytania w godzinach szczytu. Skarżyli się na przekroczenia limitu czasu aplikacji i gorszą wydajność.

Analiza licznika

Ujawniono dane z Monitora wydajności:

  • Długość życia strony spadła do 50 sekund (normalnie: >300)
  • Współczynnik trafień bufora spadł do 85% (normalnie: >99%)
  • Oczekujące przyznania pamięci często pokazywały wartości 5-10
  • Liczba odczytów dysków fizycznych na sekundę znacznie wzrosła

Kroki rozwiązywania

  1. Sprawdzone SQL Server maksymalne ustawienie pamięci – odkryto, że było ustawione na wartość domyślną (nieograniczoną)
  2. Przegląd całkowitej pamięci serwera w porównaniu z pamięcią serwera docelowego – wykazał znaczną różnicę
  3. Skonfigurowano maksymalną pamięć serwera, aby pozostawić 8 GB dla systemu operacyjnego
  4. Włączono uprawnienie „Blokowanie stron w pamięci” dla SQL Server konto usługi
  5. Dodano 32 GB dodatkowej pamięci RAM do serwera
  6. Monitorowana wydajność przez tydzień – oczekiwana długość życia strony ustabilizowała się powyżej 500 sekund

Wynik: Czas odpowiedzi na zapytania poprawił się o 60%, użytkownicy przestali się skarżyć, a wydajność aplikacji wróciła do normy.

14.2 Studium przypadku: Optymalizacja wydajności procesora

Identyfikacja objawu

A SQL Server konsekwentnie wykazywały wykorzystanie procesora powyżej 90% w godzinach pracy, co powodowało wolne działanie aplikacji i frustrację użytkowników.

Analiza licznika

Monitorowanie wydajności ujawniło:

  • % Czas procesora wynosił średnio 92% z częstymi skokami do 100%
  • Długość kolejki procesora stale powyżej 4 (serwer miał 8 rdzeni)
  • Kompilacje SQL/sek. stanowiły 25% żądań wsadowych/sek. (powinny być <10%)
  • Ponowne kompilacje SQL/sek. stanowiły 15% żądań wsadowych/sek.

Kroki rozwiązywania

  1. Wykorzystano DMV do identyfikacji zapytań najbardziej obciążających procesor
  2. Przeanalizowano plany wykonania dla zidentyfikowanych zapytań
  3. Odkryto wielokrotne skanowanie dużych tabel z powodu brakujących indeksów
  4. Utworzono odpowiednie indeksy na podstawie zaleceń planu wykonania
  5. Zidentyfikowano dynamiczny kod SQL powodujący nadmierne kompilacje
  6. Zmodyfikowano kod aplikacji w celu wykorzystania zapytań parametrycznych
  7. Wdrożono przewodnik po planach dla problematycznych procedur składowanych
  8. Zaktualizowane statystyki dotyczące często używanych tabel

Wynik: Wykorzystanie procesora spadło średnio do 45% w godzinach pracy. Czas wykonywania zapytań skrócił się o 70%. Responsywność aplikacji uległa znacznej poprawie.

14.3 Studium przypadku: Rozwiązywanie wąskiego gardła wejścia/wyjścia dysku

Identyfikacja objawu

Użytkownicy zgłaszali wyjątkowo powolną reakcję aplikacji podczas operacji ładowania danych i wieczornego przetwarzania wsadowego.

Analiza licznika

Dane dotyczące wydajności wykazały:

  • Średni czas zapisu na dysku dziennika transakcji przekroczył 45 ms
  • Długość kolejki dyskowej wynosiła średnio 12 na dysku z plikami danych
  • % czasu dysku utrzymywało się powyżej 95% przez wiele godzin podczas zadań wsadowych
  • Liczba zapisów stron na sekundę była wyjątkowo wysoka

Kroki rozwiązywania

  1. Zweryfikowano, że ustawienia pamięci były odpowiednie – nie stwierdzono żadnych problemów z pamięcią
  2. Przeanalizowano konfigurację dysku – odkryto wszystkie pliki na tym samym zestawie wrzecion
  3. Oddzielone dzienniki transakcji na dedykowane szybkie dyski SSD
  4. Przeniesiono tempdb na oddzielne dyski SSD
  5. Zaimplementowano wiele plików danych tempdb (jeden na rdzeń)
  6. Zaktualizowano dyski danych do konfiguracji RAID 10 SSD
  7. Zoptymalizowano zadania wsadowe w celu wykorzystania mniejszych partii transakcji
  8. Dodano indeksy w celu ograniczenia niepotrzebnych skanów tabel podczas operacji wsadowych

Wynik: Średni czas zapisu na dysku spadł do 3 ms. Długość kolejki dyskowej spadła poniżej 1. Czas realizacji zadania wsadowego skrócony o 75%.

15. Przyszłe trendy w SQL Server Monitorowanie

15.1 Integracja sztucznej inteligencji i uczenia maszynowego

Sztuczna inteligencja i uczenie maszynowe zmieniają SQL Server monitor wydajności.

Analityka predykcyjna

Modele uczenia maszynowego prognozują przyszłe zapotrzebowanie na zasoby na podstawie danych historycznych. Systemy te mogą prognozować:

  • Kiedy pojemność pamięci masowej zostanie wyczerpana
  • Oczekiwane zapotrzebowanie na procesor i pamięć w okresach szczytowych
  • Zapobiegaj pogorszeniu wydajności zapytań, zanim wpłynie to na użytkowników
  • Optymalne czasy na prace konserwacyjne

Wykrywanie anomalii

Narzędzia oparte na sztucznej inteligencji automatycznie wykrywają nietypowe wzorce w metrykach wydajności. Identyfikują anomalie, które administratorzy mogliby przeoczyć, i odróżniają normalne odchylenia od rzeczywistych problemów.

Zautomatyzowana naprawa

Systemy samonaprawiające się automatycznie rozwiązują typowe problemy po ich wykryciu:

  • Uruchom ponownie usługi, które zostały zatrzymane
  • Realokacja zasobów w okresach szczytowego obciążenia
  • Zastosuj poprawki znanych problemów
  • Automatycznie odbuduj pofragmentowane indeksy

15.2 Ewolucja monitorowania w chmurze

Monitorowanie chmury stale się rozwija i zyskuje nowe możliwości.

Zunifikowane platformy monitorujące

Nowoczesne platformy zapewniają widoczność z jednego panelu szklanego w zakresie:

  • Lokalnie SQL Server instancje
  • Bazy danych hostowane w chmurze
  • Środowiska hybrydowe
  • Wydajność aplikacji
  • Metryki infrastruktury

Trendy obserwowalności

Przejście od monitorowania do obserwowalności kładzie nacisk na:

  • Zrozumienie zachowania systemu na podstawie wyników
  • Korelacja metryk, dzienników i śladów
  • Głęboka wiedza na temat systemów rozproszonych
  • Diagnoza problemu w czasie rzeczywistym

15.3 Samonaprawiające się systemy baz danych

Przyszłość SQL Server wersje będą miały więcej autonomicznych funkcji.

Automatyczna optymalizacja

Bazy danych będą się nieustannie optymalizować poprzez:

  • Automatyczne tworzenie i usuwanie indeksów na podstawie obciążenia pracą
  • Dostosowywanie ustawień konfiguracji w celu uzyskania optymalnej wydajności
  • Transparentne przepisywanie nieefektywnych zapytań
  • Dynamiczne zarządzanie alokacją zasobów

Inteligentne strojenie

Zaawansowane systemy będą uczyć się na podstawie wzorców wydajności i automatycznie stosować zalecenia dotyczące dostrajania, ograniczając potrzebę ręcznej interwencji administratora baz danych.

16. Wnioski i najważniejsze informacje

16.1 Podsumowanie podstawowych praktyk monitorowania

Efektywne SQL Server Monitorowanie wydajności wymaga kompleksowego podejścia łączącego narzędzia, techniki i najlepsze praktyki.

Podsumowanie krytycznych kontr

Skoncentruj wysiłki monitorujące na następujących podstawowych kwestiach:

  • Pamięć: oczekiwana żywotność strony, współczynnik trafień w buforze, oczekujące przyznania pamięci
  • Procesor: % czasu procesora, długość kolejki procesora
  • Dysk: średnia liczba sekund na odczyt i zapis dysku, długość kolejki dyskowej
  • SQL Server: Żądania wsadowe/sek., Kompilacje/sek., Połączenia użytkowników

Podsumowanie najlepszych praktyk

  • Ustalanie punktów odniesienia podczas normalnych operacji
  • Ustaw inteligentne progi alertów na podstawie wartości bazowych
  • Regularnie przeglądaj dane dotyczące wydajności
  • Zrównoważenie obciążenia monitorowania z granularnością danych
  • Zachowaj dane długoterminowe w celu analizy trendów
  • Użyj odpowiednich narzędzi dla każdego scenariusza monitorowania

16.2 Podejście ciągłego doskonalenia

SQL Server Monitorowanie wydajności nie jest czynnością jednorazową, lecz procesem ciągłym, wymagającym ciągłego udoskonalania.

Regularne cykle przeglądów

  • Codziennie: sprawdź alerty i aktualną wydajność
  • Tygodniowo: przegląd trendów i identyfikacja pojawiających się problemów
  • Miesięcznie: Analiza długoterminowych wzorców i potrzeb w zakresie pojemności
  • Kwartalnie: aktualizacja danych bazowych i przegląd skuteczności monitorowania

Bądź na bieżąco z narzędziami

Utrzymuj aktualne narzędzia i techniki monitorowania:

  • Oceń nowe funkcje monitorowania w SQL Server aktualizacje
  • Testuj nowe narzędzia innych firm
  • Uczestnicz w szkoleniach i konferencjach
  • Uczestniczyć w SQL Server Fora społecznościowe
  • Dziel się wiedzą z członkami zespołu

16.3 Następne kroki

Wdrożenie SQL Server monitoruj wydajność systematycznie:

Plan wdrożenia

  1. Tydzień 1: Skonfiguruj Monitor wydajności z niezbędnymi licznikami
  2. Tydzień 2: Utwórz zestawy modułów zbierających dane do automatycznego zbierania danych
  3. Tydzień 3: Ustalanie punktów odniesienia podczas normalnych operacji
  4. Tydzień 4: Konfiguruj alerty dla progów krytycznych
  5. Miesiąc 2: Wdrożenie dodatkowych narzędzi monitorujących (DMV, zdarzenia rozszerzone)
  6. Miesiąc 3: Twórz niestandardowe pulpity nawigacyjne i raporty
  7. Bieżący: Udoskonalaj monitorowanie na podstawie doświadczenia i zmieniających się wymagań

Dodatkowe zasoby

Kontynuuj naukę SQL Server Monitoruj wydajność, korzystając z dokumentacji firmy Microsoft, blogów społeczności i ćwiczeń praktycznych. Eksperymentuj z różnymi narzędziami i technikami, aby znaleźć rozwiązanie najlepiej sprawdzające się w Twoim środowisku.

17. Często zadawane pytania (FAQ)

17.1 Jakie są najważniejsze SQL Server liczniki wydajności do monitorowania?

Najbardziej krytyczne SQL Server liczniki wydajności obejmują:

  • Pamięć: oczekiwana żywotność strony (powinna być >300 sekund) i współczynnik trafień bufora (powinien być >99%)
  • Procesor: % czasu procesora (utrzymywane wartości <75%) i długość kolejki procesora (powinna być mniejsza niż 2 na rdzeń)
  • Dysk: średnia liczba sekund na odczyt i zapis dysku (powinna wynosić <10–20 ms) i długość kolejki dyskowej (powinna wynosić <2 na dysk)
  • SQL Server: Żądania wsadowe/s, kompilacje SQL/s i oczekujące przyznania pamięci (powinny być równe 0)

Liczniki te zapewniają kompleksowy wgląd w stan systemu i pomagają szybko identyfikować wąskie gardła.

17.2 Jak często powinienem zbierać dane dotyczące wydajności?

Częstotliwość zbierania danych zależy od celów monitorowania:

  • Monitorowanie bazowe: co 1 minutę (60 sekund)
  • Aktywne rozwiązywanie problemów: co 15–30 sekund przez krótkie okresy
  • Trendy długoterminowe: co 5 minut

Unikaj ciągłego gromadzenia danych o wysokiej częstotliwości, ponieważ może to wpłynąć na wydajność i generować nadmiar danych. Używaj dłuższych interwałów do rutynowego monitorowania, a krótszych tylko podczas badania konkretnych problemów.

17.3 Jaka jest różnica między Monitorem wydajności a SQL Server Profiler?

Monitor wydajności i SQL Server Profilery służą różnym celom:

Performance Monitor:

  • Monitoruje system i SQL Server liczniki wydajności
  • Śledzi wykorzystanie zasobów (procesor, pamięć, dysk)
  • Niskie koszty ogólne, odpowiednie do ciągłego monitorowania
  • Zapewnia zbiorcze metryki w czasie

SQL Server profiler:

  • Ślady indywidualne SQL Server wydarzenia i zapytania
  • Rejestruje szczegółowe informacje o wykonywaniu zapytań
  • Większe obciążenie, niezalecane do ciągłego użytkowania
  • Najlepiej rozwiązywać problemy związane z konkretnymi zapytaniami
  • Wycofano na rzecz wydarzeń rozszerzonych

Użyj Performance Monitor do monitorowania całego systemu, a Extended Events (nie Profiler) do szczegółowej analizy na poziomie zapytań.

17.4 Wpływ monitora wydajności SQL Server wydajność?

Prawidłowo skonfigurowany Monitor wydajności ma minimalny wpływ na SQL Server wydajność, zazwyczaj poniżej 2% narzutu. Jednak nadmierne monitorowanie może powodować problemy:

  • Zbyt duża liczba liczników zwiększa obciążenie
  • Bardzo krótkie odstępy między próbkami (poniżej 15 sekund) obciążają zasoby
  • Ciągłe gromadzenie danych o wysokiej częstotliwości generuje duże pliki dziennika

Aby zminimalizować wpływ:

  • Monitoruj tylko niezbędne liczniki
  • Stosuj odpowiednie odstępy między próbkami (60 sekund w przypadku rutynowego monitorowania)
  • Przechowuj dzienniki na dyskach oddzielnie od plików bazy danych
  • Zaplanuj monitorowanie wymagające dużej ilości zasobów poza godzinami szczytu

17.5 Jak długo powinienem przechowywać dane monitorowania wydajności?

Czas przechowywania zależy od potrzeb analitycznych i pojemności pamięci masowej:

  • minimalna: 3 miesiące na rozwiązywanie ostatnich problemów
  • Polecamy: 1-2 lata na planowanie pojemności i analizę trendów
  • Optymalne: Bezterminowo, jeśli pozwala na to przechowywanie, ponieważ dane historyczne z czasem stają się cenniejsze

Dane liczników wydajności dobrze się kompresują i zajmują stosunkowo mało miejsca. Rozważ archiwizację starszych danych w oddzielnym magazynie zamiast ich usuwania. Wiele organizacji uważa, że ​​lata danych historycznych okazują się nieocenione w planowaniu pojemności i identyfikowaniu długoterminowych trendów.

17.6 Jakie są dobre wartości progowe dla kluczowych liczników wydajności?

Zalecane wartości progowe dla alertów:

  • Oczekujące przyznania pamięci: Alert, gdy > 0
  • Długość życia strony: Alert, gdy < 300 sekund
  • % Czas procesora: Alert, gdy > 80% przez 5 minut
  • Długość kolejki procesora: Alert, gdy > 2 na rdzeń
  • Średnia liczba sekund na dysku/odczyt lub zapis: Alert, gdy > 20 ms
  • Długość kolejki dyskowej: Alert, gdy > 2 na dysk
  • Zablokowane procesy: Alert, gdy > 5

Dostosuj te progi na podstawie danych bazowych i charakterystyki konkretnego obciążenia. To, co jest normalne w jednym środowisku, może wskazywać na problemy w innym.

17.7 Jak monitorować SQL Server występ zdalnie?

Monitoruj zdalnie SQL Server wystąpienia wykorzystujące te metody:

  1. Performance Monitor: Podaj nazwę komputera zdalnego podczas dodawania liczników
  2. PowerShell: Użyj parametru -ComputerName z poleceniem Get-Counter
  3. Wydziały komunikacji: Łącz się ze zdalnymi serwerami za pomocą SSMS i wysyłaj zapytania do DMV
  4. Narzędzia innych firm: Większość narzędzi monitorujących obsługuje zdalne monitorowanie serwera

Upewnij się, że reguły zapory zezwalają na ruch Monitora wydajności i że masz odpowiednie uprawnienia na serwerze zdalnym. W przypadku wielu serwerów rozważ wdrożenie scentralizowanego monitorowania z dedykowanym serwerem monitorowania i bazą danych.

17.8 Jakie jest najlepsze darmowe narzędzie do SQL Server monitor wydajności?

Dostępnych jest kilka doskonałych, bezpłatnych narzędzi do monitorowania SQL Server wydajność:

  • Monitor wydajności systemu Windows: Wbudowany, kompleksowy i niezawodny
  • Monitor aktywności SSMS: Monitorowanie w czasie rzeczywistym bez dodatkowej instalacji
  • Wydarzenia rozszerzone: Wbudowany lekki monitoring zdarzeń SQL Server
  • sp_WhoIsActive: Popularna, bezpłatna procedura składowana do szczegółowego monitorowania aktywności
  • DBA Dash: Narzędzie do monitorowania typu open source z kompleksowymi funkcjami
  • SQLWATCH: Oprogramowanie typu open source z możliwością monitorowania niemal w czasie rzeczywistym

W przypadku większości organizacji Performance Monitor w połączeniu z narzędziami SSMS i sp_WhoIsActive zapewnia doskonałe możliwości monitorowania bez dodatkowych kosztów.

17.9 Jak eksportować dane PerfMon do analizy?

Eksportuj dane Monitora wydajności za pomocą następujących metod:

Eksport do CSV:

  1. Otwórz Monitor wydajności z załadowanym plikiem dziennika
  2. Kliknij prawym przyciskiem myszy wykres i wybierz Zapisz dane jako
  3. Dodaj Plik tekstowy (rozdzielony przecinkami) (.csv)
  4. Wybierz lokalizację i zapisz
  5. Otwórz w programie Excel w celu analizy

Użyj polecenia Relog:

relog input.blg -f csv -o output.csv

To narzędzie wiersza poleceń konwertuje pliki dziennika binarnego (.blg) do formatu CSV w celu ułatwienia analizy w arkuszach kalkulacyjnych.

17.10 Kiedy powinienem korzystać z narzędzi monitorujących innych firm zamiast opcji wbudowanych?

Rozważ wykorzystanie narzędzi innych firm, gdy:

  • Zarządzanie dużą liczbą SQL Server instancje (10+)
  • Wymaganie scentralizowanego monitorowania w wielu centrach danych
  • Potrzeba zaawansowanych funkcji, takich jak analityka predykcyjna lub wykrywanie anomalii
  • Chęć zintegrowanego powiadamiania z systemami zarządzania incydentami
  • Wymaganie raportowania zgodności i analizy historycznej
  • Brak zasobów administratora baz danych do tworzenia i utrzymywania niestandardowych rozwiązań
  • Monitorowanie heterogenicznych środowisk baz danych (SQL Server, Oracle, MySQL, itp.)

Wbudowane narzędzia sprawdzają się w mniejszych środowiskach lub gdy masz doświadczonego administratora baz danych, który potrafi tworzyć niestandardowe rozwiązania do monitorowania. Narzędzia innych firm zapewniają wartość poprzez oszczędność czasu, zaawansowane funkcje i profesjonalne wsparcie.

18. Dodatkowe zasoby

18.1 Oficjalna dokumentacja

Firma Microsoft udostępnia obszerną dokumentację SQL Server monitor wydajności:

18.2 Zalecane narzędzia i pliki do pobrania

Niezbędne narzędzia do SQL Server monitor wydajności:

  • Narzędzie PAL: https://github.com/clinthuffman/PAL
  • sp_WhoIsActive: http://whoisactive.com/
  • DBA Dash: https://dbadash.com/
  • SQLWATCH: https://github.com/marcingminski/sqlwatch
  • Zestaw pierwszej pomocy (Brent Ozar): https://www.brentozar.com/first-aid/
  • SQL Server Studio zarządzania: https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

18.3 Zasoby społeczności

Ucz się od SQL Server społeczność:

  • SQL Server Central: https://www.sqlservercentral.com/
  • Blog Brenta Ozara: https://www.brentozar.com/blog/
  • SQL Shack: https://www.sqlshack.com/
  • Wskazówki dotyczące MSSQL: https://www.mssqltips.com/
  • Reddit r/SQLServer: https://www.reddit.com/r/SQLServer/
  • Przepełnienie stosu SQL Server etykietka: https://stackoverflow.com/questions/tagged/sql-server

Zasoby te zawierają samouczki, porady dotyczące rozwiązywania problemów i najlepsze praktyki od doświadczonych SQL Server profesjonalistów. Udział w forach społecznościowych pozwala uczyć się na doświadczeniach innych i dzielić się własną wiedzą.


O autorze

Yuan Sheng jest starszym administratorem baz danych (DBA) z ponad 10-letnim doświadczeniem w SQL Server środowiskach i zarządzaniu bazami danych przedsiębiorstw. Z powodzeniem rozwiązał setki scenariuszy odzyskiwania baz danych w firmach z branży usług finansowych, opieki zdrowotnej i produkcji.

Yuan specjalizuje się w SQL Server odzyskiwanie baz danych, rozwiązania o wysokiej dostępnościi optymalizacji wydajności. Jego bogate doświadczenie praktyczne obejmuje zarządzanie bazami danych o pojemności wielu terabajtów, wdrażanie Grupy dostępności Always Onoraz opracowywanie zautomatyzowanych strategii tworzenia kopii zapasowych i odzyskiwania danych dla systemów biznesowych o znaczeniu krytycznym.

Dzięki swojej wiedzy technicznej i praktycznemu podejściu Yuan skupia się na tworzeniu kompleksowych przewodników, które pomagają administratorom baz danych i specjalistom IT rozwiązywać złożone problemy SQL Server skutecznie stawia czoła wyzwaniom. Jest na bieżąco z najnowszymi SQL Server wydania i rozwijające się technologie baz danych firmy Microsoft, regularnie testując scenariusze odzyskiwania, aby mieć pewność, że jego zalecenia odzwierciedlają najlepsze praktyki stosowane w praktyce.

Masz pytania dot SQL Server Potrzebujesz pomocy w odzyskiwaniu danych lub dodatkowych wskazówek dotyczących rozwiązywania problemów z bazą danych? Yuan zaprasza opinie i sugestie w celu udoskonalenia tych zasobów technicznych.

Podziel się teraz: