Eksplorowanie scenariuszy wydajności

Ukończone

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.

Diagram przedstawiający uruchamianie i oczekiwanie.

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_stats

    W 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_stats

    Ten 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_governance

    W 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_governance

    W 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_requests

    Użyj tego dynamicznego widoku zarządzania w usłudze Azure SQL, aby uzyskać migawkę stanu aktywnych zapytań. Poszukaj zapytań ze stanem RUNNABLE i typem SOS_SCHEDULER_YIELD oczekiwania, aby sprawdzić, czy masz wystarczającą pojemność procesora CPU.

  • sys.dm_exec_query_stats

    Ten 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_stats

    Ten 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_stats

    Uż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_requests

    Uż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_tasks

    Moż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_tasks zawiera 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ć THREADPOOL oczekiwania.

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_COMMIT
  • HADR_DATABASE_FLOW_CONTROL
  • HADR_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.