| Termin | Definicja |
|---|---|
| Rekomendacje Query Tuning Assistant | Query Tuning Assistant to funkcja Azure SQL wspierająca migrację między poziomami zgodności bez regresji wydajności. Query Tuning Assistant a zmiana poziomu zgodności w Azure SQLQuery Tuning Assistant to funkcja usługi Azure SQL przeznaczona do kontrolowania zmian poziomu zgodności bazy danych. Poziom zgodności wpływa między innymi na sposób optymalizacji zapytań przez silnik oraz na dostępność zachowań wprowadzonych w określonych wersjach aparatu bazy danych. Zmiana tego ustawienia może poprawić wykorzystanie nowszych mechanizmów optymalizatora, ale w przypadku części zapytań może także spowodować wybór innego planu wykonania i pogorszenie czasu odpowiedzi. Asystent wspiera przejście między poziomami zgodności przez analizę danych o rzeczywistym wykonaniu zapytań. Jego zadaniem nie jest mechaniczne ustawienie nowej wartości, lecz ułatwienie sprawdzenia, czy po zmianie pojawiły się regresje wydajności. Ocena powinna dotyczyć konkretnej bazy, konkretnego obciążenia i porównywalnego okresu pracy, ponieważ sam poziom zgodności nie opisuje jeszcze zachowania każdego zapytania. Rola Query Store w wykrywaniu regresjiPodstawowym źródłem informacji dla tego procesu jest Query Store, czyli mechanizm Azure SQL przechowujący dane o zapytaniach, planach wykonania i statystykach ich działania w czasie. Dzięki temu można porównać wykonania z okresu przed zmianą poziomu zgodności z wykonaniami po zmianie. Istotne są między innymi czas trwania, zużycie procesora, liczba odczytów oraz liczba wykonań, o ile te dane zostały zarejestrowane przez Query Store. Query Tuning Assistant wykorzystuje porównanie obserwowanych wyników do wskazania zapytań, których działanie mogło się pogorszyć po zmianie. Regresja nie musi oznaczać błędu składni ani nieprawidłowej odpowiedzi. Może polegać na tym, że optymalizator wybrał plan wymagający większej liczby odczytów, dłuższego czasu procesora albo kosztowniejszego dostępu do danych. Dlatego analiza wydajności powinna uwzględniać zarówno wartości średnie, jak i zmienność wyników oraz częstotliwość wykonywania danego zapytania. Ocena planów wykonania po migracjiPo zmianie poziomu zgodności Query Tuning Assistant pomaga odróżnić zapytania działające stabilnie od tych, dla których wystąpiła zmiana zachowania. W praktyce należy sprawdzić plan wykonania zarejestrowany przed zmianą oraz plan używany po zmianie. Różnica może dotyczyć sposobu łączenia tabel, kolejności operacji, rodzaju dostępu do indeksu, estymacji liczby wierszy albo zastosowania operatorów sortowania i agregacji. Wykrycie regresji nie oznacza automatycznie, że trzeba wycofać zmianę poziomu zgodności dla całej bazy. W Azure SQL możliwe jest dalsze badanie konkretnego zapytania i jego planów za pomocą Query Store. W zależności od przyczyny analizuje się statystyki, indeksy, aktualność danych o rozkładzie wartości oraz kształt samego zapytania. Mechanizmy stabilizacji planu, takie jak wymuszenie wcześniej działającego planu w Query Store, powinny być stosowane dopiero po potwierdzeniu, że plan jest właściwy dla aktualnego obciążenia i danych. Warunki wiarygodnej rekomendacjiRekomendacja Query Tuning Assistant ma sens wtedy, gdy Query Store zawiera reprezentatywną historię wykonań. Krótki lub nietypowy okres obserwacji może prowadzić do błędnych wniosków: zapytanie może wyglądać na wolniejsze tylko dlatego, że przetwarzało większy zakres danych, pracowało w godzinach szczytu albo było uruchamiane z innymi parametrami. Przed porównaniem należy więc upewnić się, że baza była obciążona podobnym rodzajem pracy, a kolekcjonowanie danych Query Store nie zostało wyłączone lub ograniczone. Query Tuning Assistant wspiera proces decyzyjny, ale nie zastępuje przeglądu technicznego. Wynik trzeba odnieść do planów wykonania, parametrów zapytań, indeksów, statystyk i charakterystyki obciążenia. Szczególnej ostrożności wymaga sytuacja, w której zmiana poziomu zgodności zbiega się z innymi modyfikacjami, takimi jak aktualizacja aplikacji, zmiana schematu tabel albo masowe zasilenie danych. Dopiero rozdzielenie tych czynników pozwala ocenić, czy zaobserwowana różnica rzeczywiście wynika ze zmiany poziomu zgodności i czy wskazane działanie ograniczy regresję bez tworzenia nowego problemu dla innych zapytań. |