Monitorowanie wydajności programu SQL Server jest uważane przez wielu administratorów baz danych za najważniejszy obowiązek. Biorąc pod uwagę, że słabo wydajne serwery mogą negatywnie wpłynąć nie tylko na operacje wewnętrzne, ale także na aplikacje skierowane do klientów, śledzenie wydajności SQL i szybkie łagodzenie problemów mają kluczowe znaczenie dla sukcesu i rentowności firmy.
Ponieważ coraz więcej organizacji zwraca się do SQL Server, administratorzy baz danych coraz częściej szukają zasobów, które pomogą im wdrożyć solidną strategię monitorowania wydajności. Dostępna jest duża ilość dokumentacji, która pomoże administratorom baz danych przyspieszyć monitorowanie wydajności programu SQL Server, ale istnieje kilka uniwersalnych pytań, na które prawie każdy administrator chce uzyskać szybką odpowiedź. Oto odpowiedzi na 10 najczęściej zadawanych pytań dotyczących monitorowania wydajności SQL Server.
Co to jest monitorowanie wydajności SQL Server?
Głównym celem monitorowania wydajności SQL Server jest zapewnienie spójnej wydajności i wysokiej dostępności instancji SQL Server. Monitorowanie wydajności to proces dwuczęściowy, a obie części są niezbędne do utrzymania optymalnego działania systemu:
-
Monitorowanie: Śledź szeroki zakres metryk wydajności względem ustalonych progów, aby zidentyfikować nietypowe zachowanie i zapewnić mechanizm informowania administratora o alarmach, które są specyficzne dla problemu i zapewniają wystarczający kontekst do rozpoczęcia procesu diagnostycznego.
-
Diagnostyka: Przepływ pracy i narzędzia wymagane do ustalenia źródła problemu z wydajnością oraz dane wymagane do rozwiązania bezpośredniego problemu.
-
Analiza przyczyn źródłowych: Spostrzeżenia pozwalające spojrzeć poza objawy i zidentyfikować podstawowe problemy, które wywołały problem i mogą spowodować jego ponowne wystąpienie.
-
Analiza trendów: Spójrz na wydajność w dłuższych okresach czasu. Użyj analizy trendów, aby zidentyfikować problemy, zanim się pojawią, więc rozróżniaj problemy jednorazowe i powtarzające się lub sprawdzaj granice obciążenia w czasie. Te ostatnie można wykorzystać do przewidywania przyszłych potrzeb infrastrukturalnych, informowania o działaniach konsolidacyjnych lub odpowiedniego rozmiaru dla planowanej migracji do chmury.
Które narzędzia do monitorowania wydajności bazy danych są najlepsze?
Liczba baz danych, za które odpowiedzialny jest administrator DBA, sprawia, że ręczne monitorowanie i diagnostyka są niepraktyczne, a nawet niemożliwe. Na szczęście najnowsze oprogramowanie do monitorowania wydajności jest wyposażone w mnóstwo funkcji, dzięki którym można zarządzać monitorowaniem wydajności, nawet na dużą skalę:
-
Skuteczne zarządzanie alarmami: Priorytetyzacja alarmów oznacza, że możesz najpierw zająć się dużymi problemami i zignorować fałszywe alarmy.
-
Kompleksowa diagnostyka: Najlepsze narzędzia do monitorowania wydajności pozwalają zagłębić się w diagnostykę. Wiedza o problemie nie jest tak pomocna, jak wiedza o tym, jak go naprawić.
-
Szybki czas uzyskania wartości: Każda instancja zbiera setki metryk, a przechowywanie ich na miejscu szybko stanie się kosztowne. Rozważ jedno z rozwiązań monitorowania wydajności SaaS w celu obniżenia kosztów i skalowalności.
-
Analityka: Solidna analityka jest kluczowym wyróżnikiem narzędzi do monitorowania wydajności. Aby uzyskać maksymalny wpływ na wydajność, wybierz narzędzie, które zapewnia obszerne metryki dotyczące obciążenia, planu zapytań, głównej przyczyny alarmu i blokowania.
-
Śledzenie danych historycznych: Poszukaj narzędzia do monitorowania wydajności, które zapisuje dane historyczne. Przyspieszy to rozwiązywanie problemów, ponieważ będziesz wiedzieć, czy problem się powtarza i jak problemy są śledzone w czasie.
-
Dostrajanie i optymalizacja planu zapytań: Narzędzie z wbudowaną sztuczną inteligencją pozwoli Ci dostroić zapytania i zoptymalizować je pod kątem konkretnej instancji.
-
Kontrole stanu: Kontrole kondycji monitorują parametry życiowe programu SQL Server, aby poinformować Cię, że możesz mieć problem — czasami jeszcze zanim problem wystąpi.
Jeśli potrzebujesz narzędzia ze wszystkimi funkcjami omówionymi powyżej, musisz skorzystać z jednego z opartych na chmurze rozwiązań do monitorowania wydajności programu SQL Server. Niezrównane pod względem skalowalności, elastyczności i ceny te narzędzia do monitorowania zapewniają bezpieczną platformę monitorowania wydajności, która spełnia wszelkie potrzeby.
Jaki jest najlepszy sposób na optymalizację monitorowania wydajności bazy danych?
Jednym z najlepszych sposobów optymalizacji monitorowania wydajności jest automatyzacja. Automatyzacja typowych zadań — takich jak monitorowanie miejsca na dysku, sprawdzanie dzienników błędów i weryfikacja kopii zapasowych bazy danych — zapewni wykonanie tych zadań, co da administratorowi więcej czasu na wykonanie bardziej wartościowej pracy.
Dodatkowo możesz wdrożyć następujące elementy, aby zoptymalizować monitorowanie wydajności serwera SQL:
-
Monitorowanie mobilne: Monitoring mobilny jest dostępny na urządzeniach z systemem Android i iOS. Zapewniając mapy cieplne, inteligentne alarmy i listy alarmów, monitorowanie wydajności urządzeń mobilnych umożliwia diagnozowanie problemów i rozpoczęcie segregacji z dowolnego miejsca.
-
Dostrajanie i optymalizacja zapytań: Dostrajanie wydajności umożliwia wizualizację, analizę i optymalizację zapytań SQL i planów wykonania poprzez wyróżnianie najbardziej kosztownych operatorów, oferowanie sugerowanych rozwiązań problemów oraz przepisywanie/optymalizowanie zapytań i planu zapytań.
-
Kontrole stanu zdrowia: Kontrole kondycji pomagają zoptymalizować monitorowanie wydajności, wskazując problemy dotyczące kondycji w każdym wystąpieniu programu SQL Server, w tym długie oczekiwania i opóźnienia we/wy. Kontrole stanu dostarczają również dane historyczne, dzięki czemu możesz śledzić problemy z wydajnością w czasie.
Jak wybrać narzędzie do monitorowania SQL Server?
Przy podejmowaniu decyzji o wyborze narzędzia do monitorowania wydajności SQL Server należy wziąć pod uwagę dwie główne kwestie.
Jakiego rodzaju narzędzia szukasz?
Należy wziąć pod uwagę trzy podstawowe typy narzędzi do monitorowania wydajności:
-
Niestandardowe/własne: W takim przypadku pamiętaj, że tylko dlatego, że możesz coś zrobić, nie zawsze oznacza to, że powinieneś. Tak, możesz stworzyć wewnętrzne narzędzie do monitorowania wydajności, aby zbierać metryki za pomocą PerfMon, śladów, DMV i XEvents. Ale wady znacznie przewyższają zalety wybrania tej trasy. Nie jest skalowalny, więc wraz ze wzrostem liczby instancji cierpią możliwości monitorowania wydajności. Ponadto nie jest możliwe monitorowanie wszystkich rzeczy, które należy obserwować, aby zapewnić optymalną wydajność programu SQL Server. Gdy zaczniesz zbierać dane, musisz je gdzieś przechowywać, aby były przydatne, a to może być drogie. Podsumowując — czy bardziej cenne jest poświęcenie swojego cennego czasu na tworzenie i konserwację narzędzia do monitorowania wydajności, czy też na naprawianie i dostrajanie obciążeń o znaczeniu krytycznym.
-
Bezpłatne/open source: Jest to potencjalnie lepszy wybór niż tworzenie własnego rozwiązania do monitorowania wydajności, ale nadal istnieją ograniczenia. Chociaż zyskujesz trochę dostosowania, nadal brakuje Ci zasięgu i wstępnie skonfigurowanych alertów. Będziesz także musiał zapewnić własne miejsce do przechowywania danych. Jest to złożony proces tworzenia narzędzia, które może skutecznie przechwytywać duże ilości danych dotyczących wydajności bez wpływu na monitorowany serwer, ustawiać odpowiednie progi dla setek metryk, zarządzać dużymi ilościami gromadzonych danych, a następnie aktualizować je z poziomu jednej wersji Serwer SQL do następnego. Skoncentruj swój czas na rozwiązywaniu problemów, a nie na budowaniu systemów monitorowania wydajności. Jeśli jesteś zależny od aktualizacji społeczności, wsparcie dla nowych wersji platformy bazy danych może opóźnić jej wydanie.
-
Komercyjne: Komercyjne narzędzia do monitorowania wydajności SQL oferują szereg funkcji i poziomów dostosowania, a wiele z nich jest zaskakująco przystępnych cenowo. Komercyjne narzędzia ułatwiają monitorowanie wydajności dzięki takim opcjom, jak kontrole stanu, zarządzanie alarmami, diagnostyka wydajności i możliwości monitorowania mobilnego — funkcje, których nie uzyskasz z narzędzi bezpłatnych lub wbudowanych.
Jakie są Twoje potrzeby w określonym środowisku?
Zanim wybierzesz narzędzie do monitorowania wydajności, zadaj sobie następujące pytania, które pomogą Ci wskazać narzędzie, które spełnia Twoje konkretne potrzeby:
-
Ile instancji chcesz monitorować?
-
Czy są skolokowane lub rozproszone?
-
Czy są one dostępne lokalnie, czy w chmurze (lub obu)?
-
Czy stać Cię na opłatę ryczałtową za infrastrukturę i licencje, czy też musisz rozłożyć koszty?
-
Czy masz dostępną infrastrukturę i instancje baz danych, które możesz poświęcić narzędziu monitorującemu?
-
Czy masz czas lub zasoby wewnętrzne, aby zbudować i utrzymać infrastrukturę monitorowania?
-
Czy narzędzie ma możliwość natychmiastowego analizowania obciążenia pracą na wielu wymiarach, aby zaoszczędzić wiele godzin na pisaniu skryptów?
-
Czy istnieje inteligentna możliwość analizowania danych i pomagania w identyfikacji konkretnych problemów?
-
Czy narzędzie zapewnia natychmiastową diagnostykę, najlepsze praktyki lub diagnostykę do odpowiedniego szczegółowego opracowania?
Jaki jest najlepszy sposób monitorowania kondycji wydajności bazy danych?
Istnieje kilka oznak złego stanu serwera SQL, w tym:
-
Ogólne spowolnienie obciążenia
-
Limity czasu połączenia/zapytania
-
Nadmierne użycie procesora
-
Ciśnienie pamięci
-
Nadmierne opóźnienie odczytu/zapisu we/wy
-
Nadmierny dziennik transakcji lub rozmiar TempDB
Jeśli zauważysz którykolwiek z tych objawów, czas skonfigurować kontrole stanu, aby przywrócić system do maksymalnej wydajności. Niektóre wstępne kroki, które można podjąć, aby zidentyfikować przyczynę problemów z wydajnością, obejmują:
-
Ustalenie punktu odniesienia wyników i porównanie z nim
-
Weryfikowanie kopii zapasowych
-
Sprawdzanie brakujących indeksów
-
Określanie, jaki procent obciążenia wynika z zapytań ad hoc
Jakie są najlepsze metryki do monitorowania wydajności SQL Server?
Istnieją setki metryk, które można zmierzyć, aby pomóc w śledzeniu i poprawianiu wydajności, ale istnieje kilka wyróżniających się cech, które powinny być częścią każdego planu konserwacji programu SQL Server. Oto kilka głównych obszarów, które należy monitorować, oraz metryki, które warto mieć na oku:
-
Indeksy. Indeksy są częstym źródłem problemów z wydajnością, ponieważ bazy danych podlegają ciągłym zmianom. Dane są dodawane i usuwane, a indeksy zmieniane i usuwane, wszystko to przyczynia się do niskiej wydajności. Oto wskaźniki do obejrzenia:
- Współczynnik wypełnienia
- We/Wy
- Fragmentacja
-
Pamięć podręczna. Ważne jest, aby skonfigurować pamięć podręczną bufora, aby zoptymalizować czas, przez jaki strony tam pozostają, bez przesadzania i zatrzymywania pamięci, która jest potrzebna gdzie indziej. Oto wskaźniki do obejrzenia:
- Oczekiwana długość życia strony
- Współczynnik trafień w pamięci podręcznej bufora
-
T-SQL. Zamiast uruchamiać instrukcje SQL ad hoc, SQL Server łączy je w partiach, kompiluje w plan wykonania i buforuje, ponownie kompilując instrukcje w razie potrzeby. Nadmierne kompilacje i ponowne kompilacje mogą obniżyć wydajność. Oto wskaźniki do obejrzenia:
- Kompilacje SQL
- Ponowne kompilacje SQL
-
Inne dane, które należy uważnie obserwować:
- Blokady czekają i zablokowane procesy
- Wykorzystanie procesora
Jakie są najczęstsze problemy z monitorowaniem wydajności bazy danych?
Wąskie gardła wydajności
Wąskie gardła wydajności objawiają się jako wolne lub nieodpowiadające bazy danych. Wąskie gardła mogą być trudne do zlokalizowania, ponieważ mogą być związane z pamięcią, pamięcią masową lub procesorem. Jest jednak kilka miejsc, w których należy najpierw poszukać problemów:
- Czas oczekiwania WRITELOG
- POŁĄCZENIE PĘTLI ZAGNIEŻDŻONEJ
- Spór o TempDB
Niska oczekiwana długość życia strony (PLE)
Niski poziom PLE obniża wydajność, ponieważ SQL Server musi częściej przechodzić na dysk, aby znaleźć pliki danych, co zajmuje znacznie więcej czasu niż odczytywanie ich z bufora pamięci podręcznej.
Fragmentacja
Sprawdź swoje indeksy pod kątem nadmiernej fragmentacji. Wydajność SQL Server spada, gdy musi przeszukiwać rozproszone i częściowo wypełnione strony, aby znaleźć dane.
Jak skonfigurować system monitorowania wydajności mojej bazy danych?
Gdy już zdecydujesz się na rozwiązanie do monitorowania wydajności programu SQL Server, nadszedł czas, aby je uruchomić. Chociaż możesz od razu zagłębić się we wszystkie nowe, błyszczące funkcje, cofnięcie się o krok i metodyczne podejście do procesu pomoże Ci w pełni wykorzystać możliwości systemu. Oto kilka wskazówek dotyczących wdrażania nowego narzędzia do zarządzania wydajnością:
-
Zdecyduj, które instancje najbardziej wymagają Twojej uwagi
-
Sprawdź wymagania wstępne
-
Poznaj swoje wymagania systemowe
-
Pobierz instalator
-
Dodaj połączenia
Jakich zapytań mogę używać do monitorowania wydajności serwera SQL?
Zapytania używane do monitorowania wydajności będą się różnić w zależności od śledzonych metryk. Jednak wykrywanie problemów z pamięcią, ocena defragmentacji indeksów i identyfikacja niedopuszczalnych czasów oczekiwania są prawdopodobnie na szczycie listy kontrolnej monitorowania wydajności każdego DBA. Dokumentacja Microsoft SQL Server zawiera szczegółowe informacje na temat wielu zapytań, które pomogą Ci wdrożyć plan monitorowania wydajności:
-
Wykorzystanie pamięci
-
Defragmentacja indeksu
-
Statystyki oczekiwania
Jakie są najlepsze praktyki monitorowania wydajności bazy danych?
Niektórzy ludzie nie zgadzają się z terminem „najlepsze praktyki”, ale jeśli chodzi o monitorowanie wydajności SQL Server, nie ma argumentów, że są pewne rzeczy, które administrator DBA musi zrobić, aby utrzymać system w dobrym stanie, a użytkownicy byli zadowoleni.
Uczyń utrzymanie indeksu priorytetem
Zaniedbywanie indeksów to niezawodny sposób na generowanie problemów z wydajnością. Indeksy są źródłem typowych zabójców wydajności, w tym fragmentacji i podziałów stron.
Poznaj swoje obciążenie pracą
Trudno powiedzieć, kiedy masz problem, jeśli nie wiesz, jak wygląda „normalność”. Poświęć trochę czasu, aby poznać swoje obciążenie pracą, zadając pytania takie jak:
-
Kiedy ta instancja jest najbardziej zajęta?
-
Jakie aplikacje używają tej instancji?
-
Kiedy była ostatnia kopia zapasowa?
-
Czy ta instancja ma znane problemy z wydajnością?
Wybierz narzędzie do monitorowania wydajności, które spełnia Twoje konkretne potrzeby
Zanim zdecydujesz się na narzędzie do monitorowania wydajności SQL Server, musisz najpierw zdefiniować swoje potrzeby. Gdy zrozumiesz, co chcesz osiągnąć za pomocą narzędzia do monitorowania wydajności, możesz śmiało szukać rozwiązania z funkcjami, które spełniają Twoje wymagania.
Znajdź i napraw wąskie gardła wydajności
Oczywiste symptomy wąskich gardeł wydajności to używanie zbyt dużej ilości pamięci, długi czas oczekiwania, fragmentacja indeksów oraz zbyt duża lub zbyt mała liczba indeksów. Szybkie znajdowanie i usuwanie tych wąskich gardeł jest jednym z głównych obowiązków administratora baz danych. Najlepszym sposobem na utrzymanie wydajności bazy danych na najwyższym poziomie jest wdrożenie narzędzia do monitorowania wydajności, które pomaga łatwo lokalizować i usuwać wąskie gardła wydajności oraz inne źródła pogorszenia wydajności.