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.
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:
- Kliknij Uruchomtyp perfmon w polu wyszukiwania kliknij „Monitor wydajności” w wynikach wyszukiwania:
- Naciśnij przycisk Windows + Rtyp perfmoni naciśnij Enter
- Przejdź do 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:
- Otwórz Monitor wydajności
- Rozszerzać Zestawy kolektorów danych
- Kliknij prawym przyciskiem myszy Określony przez użytkownika
- Wybierz Nowości -> Zestaw kolektora danych
- Wprowadź opisową nazwę (np. „SQL Server „Metryki wydajności”
- Wybierz Utwórz ręcznie (zaawansowane)
- Kliknij Następna
- Sprawdź Utwórz dzienniki danych -> Licznik wydajności
- Kliknij Następna
- Kliknij Dodaj aby wybrać liczniki
- Dodaj życzenia SQL Server i liczniki systemowe.
- 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.
- Kliknij Następna
- Wybierz lokalizację, w której chcesz zapisać dzienniki
- Kliknij Zakończ, zostanie utworzony nowy zestaw modułów zbierających dane.
- 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
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:
- Po utworzeniu zestawu modułów zbierających dane kliknij go prawym przyciskiem myszy i wybierz Właściwości
- Kliknij Warunek zatrzymania .
- umożliwiać Całkowity czas trwania
- Ustaw czas trwania na 1 dzień (24 godziny)
- Kliknij OK zapisać
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:
- Kliknij prawym przyciskiem myszy zestaw modułów zbierających dane i wybierz Właściwości
- Kliknij Plan .
- Kliknij Dodaj aby utworzyć nowy harmonogram
- Skonfiguruj datę i godzinę rozpoczęcia
- Ustaw wzór powtarzania (np. codziennie)
- Kliknij OK aby zapisać harmonogram
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:
- Otwórz Monitor wydajności
- Rozszerzać Dzienniki wydajności i alerty w lewym panelu
- Kliknij prawym przyciskiem myszy Dzienniki liczników
- Wybierz Nowe ustawienia dziennika
- Nadaj dziennikowi nazwę, używając nazwy serwera bazy danych (np. „ProductionSQL01”)
- 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ć:
- Kliknij Dodaj liczniki przycisk
- Zmień nazwę komputera tak, aby wskazywała na Twój SQL Server przykład
- Naciśnij przycisk zakładka aby załadować dostępne obiekty wydajności
- Wybierz obiekt wydajności z listy rozwijanej (np. Pamięć)
- Wybierz konkretne liczniki z Lista
- Wybierz instancje, jeśli ma to zastosowanie (np. pojedyncze procesory lub dyski)
- Kliknij Dodaj aby uwzględnić licznik
- Powtórz dla wszystkich żądanych liczników
- 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:
- W właściwościach dziennika liczników zlokalizuj Próbka danych co
- Ustaw interwał (domyślnie 15 sekund)
- W przypadku monitorowania bazowego należy stosować codzienne pobieranie próbek w odstępach 1-minutowych
- W celu rozwiązywania problemów należy stosować krótkie serie impulsów w odstępach 15–30 sekund
- 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:
- Kliknij Pliki z logami zakładka we właściwościach dziennika liczników
- Zmień typ pliku dziennika na Plik tekstowy (rozdzielony przecinkami) do łatwego importowania z programu Excel
- Kliknij Konfigurowanie
- Ustaw ścieżkę do pliku w dedykowanej lokalizacji (np. współdzielonym folderze PerformanceLogs)
- 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:
- W właściwościach dziennika liczników zlokalizuj Uruchom jako
- Wprowadź nazwę użytkownika swojej domeny w formacie: DOMENA\nazwa użytkownika
- Kliknij Ustaw hasło
- Wprowadź i potwierdź swoje hasło
- 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:
- Otwórz Monitor wydajności
- W lewym okienku kliknij Narzędzia do monitorowania -> monitor wydajności.
- Kliknij prawym przyciskiem myszy w dowolnym miejscu obszaru wykresu
- Wybierz Właściwości
- Kliknij Źródło .
- Wybierz Pliki dziennika przycisk radiowy
- Kliknij Dodaj
- Przejdź do pliku dziennika (.blg lub .csv)
- Wybierz plik i kliknij Otwórz
- Użyj Zakres czasu suwakiem wybierz okres, który chcesz analizować
- Kliknij OK aby zamknąć okno dialogowe Właściwości
- Kliknij zieloną ikonę plusa, aby dodać liczniki z pliku dziennika
- Wybierz żądane liczniki do wyświetlenia
- 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:
- Otwórz Monitor wydajności z załadowanym plikiem dziennika
- Kliknij prawym przyciskiem myszy w dowolnym miejscu obszaru wykresu
- Wybierz Zapisz dane jako
- Wybierz lokalizację pliku
- Wybierz Plik tekstowy (rozdzielony przecinkami) (.csv) z listy rozwijanej
- Kliknij Zapisz
- Otwórz plik CSV w programie Excel
Sformatuj wyeksportowane dane, aby umożliwić lepszą analizę:
- Usuń półpusty wiersz 2 i wyczyść komórkę A1
- Sformatuj kolumnę A jako datę/czas
- Formatuj kolumny numeryczne z zerami dziesiętnymi i separatorem tysięcy
- Znajdź i zamień nazwy serwerów w nagłówkach (np. zamień „\\SERVERNAME” na puste miejsce)
- Wyczyść nazwy obiektów w nagłówkach (np. „Pamięć”, „Dysk fizyczny”, „Procesor”)
- 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:
- Wstaw 7 pustych wierszy na górze arkusza kalkulacyjnego
- Dodaj etykiety w kolumnie A: Średnia, Mediana, Min., Maks., Odchylenie standardowe
- W komórce B2 wprowadź: =ŚREDNIA(B9:B100) (dostosuj B100 do ostatniego wiersza danych)
- W komórce B3 wpisz: =MEDIANA(B9:B100)
- W komórce B4 wpisz: =MIN(B9:B100)
- W komórce B5 wpisz: =MAX(B9:B100)
- W komórce B6 wpisz: =ODCH.STANDARDOWE(B9:B100)
- Kopiuj formuły do wszystkich kolumn liczników
- 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
7.2 Konfigurowanie PAL
Zainstaluj PAL, wykonując następujące kroki:
- Pobierz plik instalacyjny PAL z GitHub
- Uruchom instalator
- Kliknij Następna na ekranie powitalnym
- Przejrzyj i zaakceptuj katalog instalacyjny
- Kliknij Następna aby kontynuować
- Kliknij Zainstalować aby rozpocząć instalację
- Poczekaj na zakończenie instalacji
- Kliknij Zakończ
7.3 Przetwarzanie plików dziennika za pomocą PAL
Przeanalizuj dzienniki Monitora wydajności za pomocą protokołu PAL:
- Uruchom PAL z menu Start lub katalogu instalacyjnego
- Kliknij Dziennik liczników .
- Kliknij Przeglądaj aby wybrać plik .blg
- Przejdź do pliku dziennika Monitora wydajności
- Kliknij Otwórz
- Kliknij Plik progowy .
- Wybierz plik progowy z listy rozwijanej (np. „SQL Server 2016 ”)
- Kliknij Pytania .
- Odpowiedz na pytania dotyczące konfiguracji systemu
- Określ, czy Twoje SQL Server to OLTP czy magazyn danych
- Wprowadź całkowitą dostępną pamięć RAM
- Kliknij Opcje wyjściowe .
- Wybierz katalog wyjściowy dla raportu HTML
- Sprawdź HTML format wyjściowy
- Kliknij Wykonać .
- Przejrzyj swoje wybory
- Sprawdź Rozpocznij wykonywanie teraz
- 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ść:
- Otwórz SQL Server Management Studio (SSMS) i połącz się z instancją serwera
- Kliknij prawym przyciskiem myszy nazwę serwera w Eksploratorze obiektów
- Wybierz Activity monitor
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.
8.1.2 SQL Server Panel wydajności
SQL Server Management Studio zawiera wbudowane raporty wydajności:
- In SQL Server Management Studio (SSMS), kliknij prawym przyciskiem myszy SQL Server wystąpienie w Eksploratorze obiektów
- Wybierz Raporty -> Raporty standardowe
- Wybierz spośród dostępnych raportów, takich jak Panel wydajności
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.
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:
- In SQL Server Management Studio, kliknij Narzędzia -> SQL Server Profiler
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ść.
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:
- In Eksplorator obiektów, rozszerz swój serwer i przejdź do Zarządzanie -> Wydarzenia rozszerzone -> Sesje
- Kliknij prawym przyciskiem myszy Sesji i wybierz Kreator nowej sesji
- 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.
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.
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.
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.
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:
- Zbieranie danych dotyczących wydajności podczas normalnych operacji przez co najmniej tydzień
- Rejestrowanie danych w godzinach szczytu i poza szczytem
- Dokumentowanie typowych wartości dla liczników kluczowych
- Rejestrowanie zmian sezonowych, jeśli ma to zastosowanie
- 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:
- Sprawdź licznik długości kolejki procesora. Wartości powyżej 2 na rdzeń wskazują na obciążenie procesora.
- Sprawdź % czasu procesora. Utrzymujące się wartości powyżej 75% sugerują wąskie gardło procesora.
- Zdalny pulpit do SQL Server
- Otwórz Menedżera zadań (Ctrl+Shift+Esc)
- Kliknij Procesy .
- Sprawdź Pokaż procesy wszystkich użytkowników
- Kliknij CPU nagłówek kolumny do sortowania według użycia procesora
- 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ą:
- 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)
- Włącz uprawnienie „Blokowanie stron w pamięci” dla SQL Server konto usługi
- Jeśli nadal występuje problem z pamięcią, dodaj do serwera więcej pamięci fizycznej.
- 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:
- Otwórz Monitor aktywności w SSMS
- rozwiń Procesy Sekcja
- Szukaj procesów z wartością różną od zera Zablokowany przez wartości
- Zidentyfikuj identyfikator sesji blokującej
- 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
- W SSMS kliknij prawym przyciskiem myszy nazwę serwera
- Wybierz Activity monitor
- Rozszerzać Ostatnie drogie zapytania
- 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
- W SSMS otwórz nowe okno zapytania
- Kliknij Wyświetl szacowany plan wykonania (Ctrl+L) lub Uwzględnij rzeczywisty plan wykonania (Ctrl+M)
- Wykonaj swoje zapytanie
- Przejrzyj plan wykonania kosztownych operacji
- 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ń
- W Eksploratorze obiektów SSMS kliknij prawym przyciskiem myszy bazę danych
- Wybierz Właściwości
- Kliknij Sklep zapytań strona
- In Tryb działania (żądany), Wybierz Czytaj Napisz
- W razie potrzeby skonfiguruj dodatkowe ustawienia
- Kliknij OK
Monitorowanie wydajności zapytań
Dostęp do raportów Query Store za pośrednictwem Eksploratora obiektów:
- Rozszerz bazę danych w Eksploratorze obiektów
- Rozszerzać Sklep zapytań
- 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ć:
- Otwórz zapytanie w magazynie zapytań
- Kliknij prawym przyciskiem myszy wybrany plan
- 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
- W SSMS rozwiń SQL Server Agent
- Kliknij prawym przyciskiem myszy Oferty pracy na której: Nowa praca
- Nazwij zadanie (np. „Zbieranie danych o wydajności”)
- Kliknij Cel i dodaj nowy krok
- Ustaw typ na Skrypt Transact-SQL
- Wprowadź skrypt zbierania danych
- Kliknij Harmonogramy i dodaj harmonogram
- Skonfiguruj częstotliwość (np. co 5 minut)
- Kliknij OK stworzyć pracę
Automatyczne raportowanie
Utwórz zadania generujące raporty wydajności i wysyłające je e-mailem:
- Utwórz procedurę składowaną generującą raporty
- Użyj usługi Database Mail do wysyłania raportów e-mailem
- 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
- Połącz usługę Power BI z tabelami danych dotyczących wydajności
- Twórz wizualizacje kluczowych wskaźników
- Dodaj slicery do wyboru zakresu czasu i serwera
- Publikuj pulpity nawigacyjne w usłudze Power BI
- 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
- Sprawdzone SQL Server maksymalne ustawienie pamięci – odkryto, że było ustawione na wartość domyślną (nieograniczoną)
- Przegląd całkowitej pamięci serwera w porównaniu z pamięcią serwera docelowego – wykazał znaczną różnicę
- Skonfigurowano maksymalną pamięć serwera, aby pozostawić 8 GB dla systemu operacyjnego
- Włączono uprawnienie „Blokowanie stron w pamięci” dla SQL Server konto usługi
- Dodano 32 GB dodatkowej pamięci RAM do serwera
- 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
- Wykorzystano DMV do identyfikacji zapytań najbardziej obciążających procesor
- Przeanalizowano plany wykonania dla zidentyfikowanych zapytań
- Odkryto wielokrotne skanowanie dużych tabel z powodu brakujących indeksów
- Utworzono odpowiednie indeksy na podstawie zaleceń planu wykonania
- Zidentyfikowano dynamiczny kod SQL powodujący nadmierne kompilacje
- Zmodyfikowano kod aplikacji w celu wykorzystania zapytań parametrycznych
- Wdrożono przewodnik po planach dla problematycznych procedur składowanych
- 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
- Zweryfikowano, że ustawienia pamięci były odpowiednie – nie stwierdzono żadnych problemów z pamięcią
- Przeanalizowano konfigurację dysku – odkryto wszystkie pliki na tym samym zestawie wrzecion
- Oddzielone dzienniki transakcji na dedykowane szybkie dyski SSD
- Przeniesiono tempdb na oddzielne dyski SSD
- Zaimplementowano wiele plików danych tempdb (jeden na rdzeń)
- Zaktualizowano dyski danych do konfiguracji RAID 10 SSD
- Zoptymalizowano zadania wsadowe w celu wykorzystania mniejszych partii transakcji
- 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
- Tydzień 1: Skonfiguruj Monitor wydajności z niezbędnymi licznikami
- Tydzień 2: Utwórz zestawy modułów zbierających dane do automatycznego zbierania danych
- Tydzień 3: Ustalanie punktów odniesienia podczas normalnych operacji
- Tydzień 4: Konfiguruj alerty dla progów krytycznych
- Miesiąc 2: Wdrożenie dodatkowych narzędzi monitorujących (DMV, zdarzenia rozszerzone)
- Miesiąc 3: Twórz niestandardowe pulpity nawigacyjne i raporty
- 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:
- Performance Monitor: Podaj nazwę komputera zdalnego podczas dodawania liczników
- PowerShell: Użyj parametru -ComputerName z poleceniem Get-Counter
- Wydziały komunikacji: Łącz się ze zdalnymi serwerami za pomocą SSMS i wysyłaj zapytania do DMV
- 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:
- Otwórz Monitor wydajności z załadowanym plikiem dziennika
- Kliknij prawym przyciskiem myszy wykres i wybierz Zapisz dane jako
- Dodaj Plik tekstowy (rozdzielony przecinkami) (.csv)
- Wybierz lokalizację i zapisz
- 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:
- SQL Server Dokumentacja Monitora wydajności: https://learn.microsoft.com/en-us/sql/relational-databases/performance-monitor/
- Dynamiczne widoki zarządzania: https://learn.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/
- Wydarzenia rozszerzone: https://learn.microsoft.com/en-us/sql/relational-databases/extended-events/
- Sklep zapytań: https://learn.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store
- Strojenie i monitorowanie wydajności: https://learn.microsoft.com/en-us/sql/relational-databases/performance/
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.





























