Opisywanie automatycznego dostrajania

Ukończone

Automatyczne dostrajanie to funkcja monitorowania i analizy, która stale uczy się o obciążeniu i identyfikuje potencjalne problemy i ulepszenia.

Rekomendacje dotyczące automatycznego dostrajania są oparte na danych zebranych z magazynu zapytań. Plany wykonywania ewoluują wraz z upływem czasu z powodu zmian schematu, modyfikacji indeksu lub zmian danych, które powodują aktualizacje statystyk. Ta ewolucja może spowodować, że zapytania będą działać źle, ponieważ plan wykonywania nie spełnia już wymagań danego zapytania.

Ponadto automatyczne dostrajanie umożliwia zbieranie i stosowanie usług uczenia maszynowego względem metryk wydajności w celu zapewnienia sugerowanych ulepszeń, a nawet umożliwienia samodzielnej korekty.

Niezależnie od tego, czy jest to środowisko lokalne, czy w chmurze, automatyczne dostrajanie umożliwia identyfikowanie problemów spowodowanych regresją planu wykonywania zapytań. Ponadto w usłudze Azure SQL Database można zwiększyć wydajność zapytań przez dostrajanie indeksu. Automatyczne dostrajanie usługi Azure SQL Database może identyfikować indeksy, które należy dodać, a nawet usunąć z bazy danych, aby zwiększyć wydajność zapytań.

Automatyczna korekta planu

Za pomocą danych magazynu zapytań aparat bazy danych może określić, kiedy plany wykonywania zapytań mają regresję wydajności. Chociaż można ręcznie zidentyfikować plan o regresji za pośrednictwem interfejsu użytkownika, magazyn zapytań udostępnia również opcję automatycznego powiadamiania.

Screenshot of the Query Store view for regressed plan correction.

W powyższym przykładzie widać znacznik wyboru na identyfikatorze planu 1, co oznacza, że plan został wymuszony. Po włączeniu tej funkcji aparat bazy danych automatycznie wymusi wszelkie zalecane plany wykonywania zapytań, gdy:

  • Poprzedni plan miał wyższy współczynnik błędów niż zalecany plan
  • Szacowany zysk procesora CPU był większy niż 10 sekund
  • Plan siłowy radził sobie lepiej niż poprzedni

Plan zostanie przywrócony do ostatniego znanego dobrego planu po 15 wykonaniach zapytania.

W przypadku automatycznego wymuszania planu aparat bazy danych zastosuje ostatni znany dobry plan i będzie nadal monitorować wydajność planu wykonywania zapytań. Jeśli wymuszony plan nie będzie działać lepiej niż poprzedni plan, będzie to niewymuszone i wymuszenie skompilowania nowego planu. Jeśli wymuszony plan będzie nadal przewyższać poprzednio zły plan, pozostanie wymuszony do momentu wystąpienia ponownego kompilowania.

Automatyczną korektę planu można włączyć za pomocą zapytania T-SQL, jak pokazano poniżej. Magazyn zapytań musi być włączony i musi być w trybie odczytu i zapisu, aby polecenie powiodło się. Jeśli którekolwiek z tych dwóch kryteriów nie zostanie spełnione, instrukcja ALTER zakończy się niepowodzeniem.

ALTER DATABASE [WideWorldImporters] SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);

Zalecenia dotyczące automatycznego dostrajania można sprawdzić za pomocą dynamicznego widoku zarządzania (DMV), sys.dm_db_tuning_recommendationsktóry jest dostępny w programie SQL Server 2017 lub nowszym i jest również dostępny w rozwiązaniach usługi Azure SQL Database. Ten dynamiczny widok zarządzania zawiera informacje, takie jak powody, dla których podano zalecenie, typ rekomendacji i stan zalecenia. Aby potwierdzić, że automatyczne dostrajanie jest włączone dla bazy danych, sprawdź widok sys.database_automatic_tuning_options.

Automatyczne zarządzanie indeksami

Usługa Azure SQL Database może wykonywać automatyczne dostrajanie indeksów. W czasie baza danych pozna istniejące obciążenia i przedstawi zalecenia dotyczące dodawania lub usuwania indeksów w celu zapewnienia lepszej wydajności. Podobnie jak wymuszanie ulepszonych planów zapytań, bazę danych można skonfigurować tak, aby umożliwić automatyczne tworzenie lub usuwanie indeksów w zależności od istniejącej wydajności indeksu, jak pokazano poniżej:

Screenshot of Automatic tuning Options for Azure SQL Database.

Po włączeniu strona Wydajność Rekomendacje zidentyfikuje indeksy, które można utworzyć lub porzucić w zależności od wydajności zapytań. Pamiętaj, że ta funkcja nie jest dostępna dla lokalnych baz danych i jest dostępna tylko dla usługi Azure SQL Database.

Alternatywnie użyj następującego zapytania, aby wyświetlić funkcje automatycznego dostrajania włączone w bazie danych:

SELECT name,
    desired_state_desc,
    actual_state_desc,
    reason_desc
FROM sys.database_automatic_tuning_options

Tworzenie nowych indeksów może zużywać zasoby, a czas tworzenia indeksu ma kluczowe znaczenie dla zapewnienia, że nie ma negatywnego wpływu na obciążenia.

Usługa Azure SQL Database będzie monitorować zasoby wymagane do zaimplementowania nowych indeksów, aby uniknąć obniżenia wydajności. Akcja dostrajania jest odroczona do momentu udostępnienia dostępnych zasobów, na przykład jeśli zasoby są wymagane dla istniejących obciążeń i nie są dostępne do utworzenia indeksu.

Monitorowanie zapewnia, że żadne podjęte działania nie będą szkodzić wydajności. Jeśli indeks zostanie porzucony, a wydajność zapytań znacznie się obniży, ostatnio porzucony indeks zostanie automatycznie utworzony ponownie.