Eksplorowanie scenariuszy wydajności
Aby zdecydować, jak używać narzędzi i możliwości wydajności, ważne jest, aby przyjrzeć się wydajności usługi Azure SQL przy użyciu scenariuszy.
Omówienie typowych scenariuszy wydajności
Typową techniką rozwiązywania problemów z wydajnością programu SQL Server jest sprawdzenie, czy problem z wydajnością to Uruchomiono (wysokie użycie procesora CPU) lub Oczekiwanie (oczekiwanie na zasób). Na poniższym diagramie przedstawiono drzewo decyzyjne służące do określenia, czy problem z wydajnością programu SQL Server dotyczy uruchomienia, czy oczekiwania, oraz jak używać narzędzi wydajności do określenia przyczyny i rozwiązania.
Najpierw zapoznaj się z ogólnym użyciem zasobów. W przypadku standardowego wdrożenia programu SQL Server można użyć narzędzi, takich jak monitor wydajności w systemie Windows lub w systemie Linux. W przypadku usługi Azure SQL można użyć następujących metod:
Witryna Azure Portal/program PowerShell/alerty
Usługa Azure Monitor ma zintegrowane metryki umożliwiające wyświetlanie użycia zasobów dla usługi Azure SQL. Możesz także skonfigurować alerty do wyszukiwania warunków użycia zasobów.
sys.dm_db_resource_statsW przypadku usługi Azure SQL Database możesz za pomocą tego dynamicznego widoku zarządzania wyświetlić użycie zasobów procesora CPU, pamięci i operacji we/wy dla wdrożenia bazy danych. Ten dynamiczny widok zarządzania wykonuje migawkę tych danych co 15 sekund.
sys.server_resource_statsTen dynamiczny widok zarządzania zachowuje się jak element
sys.dm_db_resource_stats, ale służy do wyświetlania użycia zasobów w usłudze SQL Managed Instance dla procesora CPU, pamięci i operacji We/Wy. Ten dynamiczny widok zarządzania wykonuje również migawkę co 15 sekund.sys.dm_user_db_resource_governanceW przypadku usługi Azure SQL Database ten dynamiczny widok zarządzania zwraca rzeczywiste ustawienia konfiguracji i pojemności używane przez mechanizmy nadzoru zasobów w bieżącej bazie danych lub elastycznej puli.
sys.dm_instance_resource_governanceW przypadku usługi Azure SQL Managed Instance ten dynamiczny widok zarządzania zwraca podobne informacje jak
sys.dm_user_db_resource_governance, ale dla bieżącego wystąpienia zarządzanego SQL.
Bieganie
Jeśli ustalono, że problem polega na wysokim wykorzystaniu procesora CPU, jest to scenariusz uruchomienia. Scenariusz uruchomienia może dotyczyć zapytań, które używają zasobów w ramach kompilacji lub wykonania. Dalszą analizę można przeprowadzić za pomocą następujących narzędzi:
Magazyn zapytań
Używaj raportów dotyczących elementów używających największej liczby zasobów w programie SSMS, widokach wykazu magazynu zapytań lub szczegółowych informacjach o wydajności zapytań w witrynie Azure Portal (tylko usługa Azure SQL Database), aby sprawdzić, które zapytania zużywają najwięcej zasobów procesora CPU.
sys.dm_exec_requestsUżyj tego dynamicznego widoku zarządzania w usłudze Azure SQL, aby uzyskać migawkę stanu aktywnych zapytań. Poszukaj zapytań ze stanem
RUNNABLEi typemSOS_SCHEDULER_YIELDoczekiwania, aby sprawdzić, czy masz wystarczającą pojemność procesora CPU.sys.dm_exec_query_statsTen dynamiczny widok zarządzania może być używany podobnie do magazynu zapytań w celu znajdowania zapytań zużywających najwięcej zasobów. Jest dostępna tylko w przypadku planów zapytań, które są buforowane, natomiast magazyn zapytań zapewnia trwały rekord historyczny wydajności. Ten dynamiczny widok zarządzania umożliwia również znalezienie planu dla buforowanego zapytania.
sys.dm_exec_procedure_statsTen dynamiczny widok zarządzania zawiera informacje podobne jak w przypadku elementu
sys.dm_exec_query_stats, z wyjątkiem tego, że informacje o wydajności mogą być wyświetlane na poziomie procedury składowanej.Po ustaleniu, które zapytania zużywają najwięcej zasobów, może być konieczne sprawdzenie, czy zasoby procesora CPU są wystarczające dla obciążenia. Można też debugować plany zapytań za pomocą narzędzi, takich jak uproszczone profilowanie zapytań, instrukcje SET, magazyn zapytań lub rozszerzone śledzenie zdarzeń.
Oczekuje
Jeśli wydaje się, że problemem nie jest wysokie użycie zasobów procesora CPU, może to oznaczać, że problem z wydajnością dotyczy oczekiwania na zasób. Scenariusze dotyczące oczekiwania na zasoby obejmują:
- Oczekiwanie na operacje We/Wy
- Oczekiwanie na blokadę
- Oczekiwanie na zatrzask
- Limity puli buforów
- Przydziały pamięci
- Wykluczanie pamięci podręcznej planów
Aby przeprowadzić analizę scenariuszy oczekiwania, zazwyczaj przyjrzyj się następującym narzędziom:
sys.dm_os_wait_statsUżyj tego dynamicznego widoku zarządzania, aby wyświetlić najczęstsze typy oczekiwania dla bazy danych lub wystąpienia. Może to pomóc w wyborze następnej czynności do wykonania w zależności od typu oczekiwania.
sys.dm_exec_requestsUżyj tego dynamicznego widoku zarządzania, aby znaleźć określone typy oczekiwania dla aktywnych zapytań, aby zobaczyć, na jaki zasób czeka. Może to być standardowy scenariusz blokowania czekający na blokady od innych użytkowników.
sys.dm_os_waiting_tasksMożesz użyć tego DMV, aby znaleźć typy oczekiwania dla określonego zadania powiązanego z zapytaniem, które jest obecnie wykonywane, być może, aby zrozumieć, dlaczego trwa to dłużej niż zwykle.
sys.dm_os_waiting_taskszawiera statystyki oczekiwania na żywo, które sys.dm_os_wait_stats agregacji w czasie.Magazyn zapytań
Magazyn zapytań udostępnia raporty i widoki wykazu, które pokazują agregację najczęstszych typów oczekiwania w przypadku wykonania planu zapytania. Ważne jest, aby wiedzieć, że oczekiwanie CPU jest równoważne aktywnego problemu.
Scenariusze dotyczące usługi Azure SQL
Istnieją pewne scenariusze wydajności — zarówno uruchomienia, jak i oczekiwania — które są specyficzne dla usługi Azure SQL. Są to m.in. zarządzanie dziennikami, limity procesów roboczych, oczekiwanie podczas używania warstw krytycznych dla działania firmy i oczekiwanie na wdrożenie w ramach hiperskali.
Zarządzanie dziennikami
Usługa Azure SQL może skorzystać z funkcji zarządzania szybkością rejestrowania, aby wymusić limity zasobów w przypadku użycia dziennika transakcji. To wymuszenie może być wymagane, aby zapewnić limity zasobów i spełnić warunki umowy SLA. Zarządzanie dziennikami może być stosowane przy następujących typach oczekiwania:
-
LOG_RATE_GOVERNOR: czeka na usługę Azure SQL Database -
POOL_LOG_RATE_GOVERNOR: czeka na pule elastyczne -
INSTANCE_LOG_GOVERNOR: czeka na usługę Azure SQL Managed Instance -
HADR_THROTTLE_LOG_RATE*: czeka na opóźnienie Krytyczne dla działania firmy i replikacji geograficznej
Limity procesów roboczych
Program SQL Server używa puli procesów roboczych wątków, ale ma ograniczenia dotyczące maksymalnej liczby procesów roboczych. Aplikacje z dużą liczbą współbieżnych użytkowników mogą zbliżać się do limitów procesów roboczych wymuszanych dla usług Azure SQL Database i SQL Managed Instance:
- Usługa Azure SQL Database ma limity na podstawie rozmiaru i warstwy usługi. W przypadku przekroczenia tego limitu nowe zapytanie spowoduje wystąpienie błędu.
- Obecnie usługa SQL Managed Instance używa metody
max worker threads, więc procesy robocze, które przeszły ten limit, mogą zobaczyćTHREADPOOLoczekiwania.
Oczekiwanie HADR w warstwie Krytyczne dla działania firmy
Jeśli używasz warstwy usługi Krytyczne dla działania firmy, możesz nieoczekiwanie zobaczyć następujące typy oczekiwania:
HADR_SYNC_COMMITHADR_DATABASE_FLOW_CONTROLHADR_THROTTLE_LOG_RATE_SEND_RECV
Mimo że te typy oczekiwania mogą nie spowalniać aplikacji, są one nieoczekiwane. Zwykle są one specyficzne dla zawsze włączonej grupy dostępności. Warstwy Krytyczne dla działania firmy korzystają z technologii grupy dostępności do implementowania funkcji umowy SLA i dostępności warstwy Krytyczne dla działania firmy, więc te typy oczekiwań mogą się pojawić. Długie czasy oczekiwania mogą wskazywać na wąskie gardło, takie jak opóźnienia I/O lub opóźnienia repliki.
Hiperskala
Architektura hiper-skala może spowodować pojawienie się niektórych unikatowych typów oczekiwań, które są poprzedzone RBIO (możliwe wskazanie zarządzania dziennikami). Ponadto DMVs (Dynamiczne Widoki Zarządzania), widoki katalogowe oraz zdarzenia rozszerzone zostały ulepszone w celu wyświetlania metryk dla odczytów serwera stron.
W następnym ćwiczeniu dowiesz się, jak monitorować i rozwiązywać problemy z wydajnością usługi Azure SQL przy użyciu narzędzi i wiedzy zdobytej w tej lekcji.