| Termin | Definicja |
|---|---|
| QUERY_CAPTURE_MODE | QUERY_CAPTURE_MODE określa, które zapytania Query Store rejestruje — wszystkie, tylko istotne lub żadne. Rola QUERY_CAPTURE_MODE w SQL Server Query StoreQUERY_CAPTURE_MODE jest opcją konfiguracji zakresu bazy danych w Microsoft SQL Server. Określa, jakie zapytania wykonywane w danej bazie mają być rejestrowane przez Query Store. Ustawienie nie zmienia sposobu wykonywania instrukcji SQL, nie wymusza konkretnego planu wykonania i nie decyduje o tym, czy zapytanie zakończy się powodzeniem. Wpływa na etap gromadzenia danych diagnostycznych: tekst zapytania, znormalizowaną postać zapytania, plany wykonania oraz statystyki czasu wykonywania mogą zostać zapisane tylko wtedy, gdy dana instrukcja zostanie objęta regułami przechwytywania. Opcja jest ustawiana na poziomie konkretnej bazy danych, a nie globalnie dla całej instalacji SQL Server. Query Store musi być włączony, aby tryb przechwytywania miał praktyczne znaczenie. Przykładowa konfiguracja wygląda następująco: Tryby ALL, AUTO i NONEW SQL Server podstawowe wartości QUERY_CAPTURE_MODE to ALL, AUTO oraz NONE. Tryb ALL przeznaczony jest do rejestrowania wszystkich zapytań, które spełniają warunki techniczne przechwytywania przez Query Store. Zwiększa kompletność obrazu aktywności, dlatego bywa przydatny podczas krótkiego, szczegółowego badania nieznanego obciążenia. Przy dużej liczbie krótkich zapytań, zapytań generowanych przez aplikację lub instrukcji wykonywanych bardzo często może jednak powodować szybki przyrost liczby przechowywanych wpisów i większy narzut związany z gromadzeniem statystyk. Tryb AUTO pozwala silnikowi ograniczać przechwytywanie instrukcji o małym znaczeniu diagnostycznym. SQL Server bierze pod uwagę między innymi częstotliwość wykonywania, zużycie zasobów oraz inne cechy obciążenia. Celem jest pozostawienie w Query Store zapytań bardziej przydatnych do analizy wydajności, przy jednoczesnym ograniczeniu szumu powodowanego przez jednorazowe lub bardzo tanie instrukcje. AUTO nie oznacza, że rejestrowane są wyłącznie zapytania wolne; oznacza automatyczny dobór zapytań według polityki silnika. Tryb NONE wyłącza przechwytywanie nowych zapytań przez Query Store. Samo ustawienie NONE nie usuwa automatycznie danych już zgromadzonych w magazynie. Wcześniejsze teksty zapytań, plany i statystyki pozostają dostępne do czasu ich usunięcia zgodnie z konfiguracją czyszczenia, ręcznego usunięcia lub inną operacją administracyjną. Po ponownym ustawieniu ALL albo AUTO SQL Server może rozpocząć rejestrowanie kolejnych instrukcji, ale dane pominięte w okresie działania NONE nie zostaną odtworzone. Wpływ ustawienia na analizę planów i statystykQUERY_CAPTURE_MODE należy odróżnić od ustawień określających czas przechowywania danych, rozmiar Query Store, interwał agregowania statystyk oraz sposób czyszczenia starych wpisów. Zmiana trybu przechwytywania nie jest poleceniem „wyczyść Query Store” i nie zastępuje kontroli limitu rozmiaru. Jeżeli Query Store osiągnie skonfigurowany limit albo działa mechanizm automatycznego czyszczenia, część starszych danych może zostać usunięta niezależnie od tego, czy aktywny jest tryb ALL czy AUTO. W praktyce tryb ma znaczenie przy szukaniu regresji wydajności. Jeżeli konkretne zapytanie nie zostało przechwycone, w widokach Query Store nie będzie można porównać jego planów ani statystyk z różnych okresów. Brak wpisu nie dowodzi więc, że zapytanie nie zostało wykonane. Może oznaczać wyłączony tryb NONE, odrzucenie instrukcji przez politykę AUTO, wyczyszczenie danych albo działanie w innej bazie niż ta, którą analizuje administrator. Weryfikację trzeba rozpocząć od sprawdzenia konfiguracji: Warto również sprawdzić, czy Query Store jest włączony oraz czy baza działa jako właściwy kontekst wykonania poleceń. Przykładowe zapytanie Dobór trybu podczas diagnostyki SQL ServerDobór wartości powinien wynikać z celu pomiaru. AUTO jest rozsądnym ustawieniem dla ciągłej obserwacji produkcyjnej, gdy ważne jest ograniczenie liczby mało użytecznych wpisów i zachowanie danych dotyczących istotnego obciążenia. ALL może być uzasadnione podczas kontrolowanego okna diagnostycznego, testu aplikacji albo analizy problemu, w którym trzeba zobaczyć również zapytania krótkie, rzadkie i wykonywane tylko raz. Po zakończeniu takiego pomiaru należy ocenić rozmiar Query Store oraz wpływ zwiększonej rejestracji na środowisko. NONE powinno być używane świadomie, ponieważ tworzy lukę w historii obserwacji. Jeżeli w czasie wyłączenia pojawi się regresja, Query Store nie będzie miał danych dla nowych wykonań z tego okresu. Przed zmianą warto zapisać bieżący tryb, stan magazynu i najważniejsze wyniki zapytań diagnostycznych. Po zmianie należy ponownie sprawdzić konfigurację oraz obserwować, czy nowe wpisy pojawiają się w widokach systemowych Query Store. W analizie trzeba też pamiętać, że Query Store przechowuje dane dla konkretnej bazy i nie zastępuje dzienników aplikacji, śledzenia blokad ani pomiarów zasobów systemowych. W serwisie laptopa lub komputera PC problem z Query Store może objawiać się jako brak historii planów, brak danych o czasie wykonania albo niemożność potwierdzenia regresji zapytania. Diagnostyka powinna obejmować nazwę i stan bazy, wartość QUERY_CAPTURE_MODE, stan Query Store, dostępne miejsce oraz czas ostatniego zebrania statystyk. Dopiero te informacje pozwalają rozstrzygnąć, czy przyczyną jest ustawienie przechwytywania, czyszczenie danych, ograniczenie magazynu, czy błąd w samym procesie analizy. |