| Termin | Definicja |
|---|---|
| Store Query Text | Store Query Text to funkcja Query Store zachowująca treść wykonanych zapytań wraz z ich planami. Store Query Text – czym jest ten element Query StoreStore Query Text to część mechanizmu Query Store w Microsoft SQL Server, odpowiedzialna za zachowanie tekstowej postaci poleceń wykonywanych przez silnik bazy danych. W praktyce przechowywany jest zapis zapytania, który pozwala później rozpoznać, jakie operacje zostały wysłane do bazy, z jakimi obiektami pracowały i w jakim kontekście mogło dojść do spowolnienia. Nie jest to zwykły dziennik błędów ani lista samych nazw procedur. Store Query Text wiąże treść polecenia z identyfikatorem zapytania, a Query Store może następnie zestawić ją z informacjami o planach wykonania, czasie realizacji, liczbie odczytów, zużyciu procesora oraz innych statystykach. Znaczenie tego rozwiązania jest szczególnie widoczne podczas analizy zmian wydajności. Jeżeli aplikacja zaczyna działać wolniej, można ustalić, czy przyczyną jest nowe zapytanie, zmodyfikowana treść istniejącego polecenia, zmiana parametrów, czy też wybór innego planu przez optymalizator. Sama nazwa obiektu, na przykład procedury składowanej, często nie wystarcza do rzetelnej oceny sytuacji. W jej obrębie może znajdować się wiele instrukcji, z których tylko jedna powoduje długi odczyt. Store Query Text ułatwia dotarcie właśnie do tej instrukcji. Przechowywana treść może obejmować zapytania ad hoc, polecenia wywoływane z procedur, instrukcje przygotowane oraz inne obsługiwane formy komunikacji z bazą. Sposób identyfikowania zapytania zależy od jego znormalizowanej postaci, dlatego różne wartości parametrów mogą być analizowane jako jedna logiczna instrukcja. Dzięki temu możliwe jest obserwowanie powtarzalnego wzorca, a nie tylko pojedynczego wykonania. Store Query Text – kontekst techniczny i porównanie z planemTreść zapytania i plan wykonania są ze sobą powiązane, ale nie oznaczają tego samego. Store Query Text opisuje polecenie zapisane w języku SQL, natomiast plan pokazuje sposób, w jaki silnik zdecydował się je wykonać. Plan może wskazywać między innymi użycie indeksu, skanowanie tabeli, kolejność łączenia danych, rodzaj operatorów oraz sposób przekazywania wyników pomiędzy etapami. Jedno zapytanie może mieć wiele planów, ponieważ optymalizator może podejmować inne decyzje po zmianie statystyk, indeksów, parametrów albo wersji środowiska. Rozdzielenie tych informacji ma praktyczne znaczenie. Gdy przechowywana jest tylko treść zapytania, można ustalić, co zostało wykonane, lecz trudniej wyjaśnić, dlaczego wynik pojawił się po określonym czasie. Gdy dostępny jest wyłącznie plan, można zobaczyć drogę przetwarzania, ale bez tekstu polecenia analiza konkretnego fragmentu logiki staje się mniej czytelna. Query Store łączy te dwa obszary, pozwalając przejść od treści do planu, a następnie do statystyk z wielu wykonań. Warto odróżnić Store Query Text od klasycznego logowania każdego żądania aplikacji. Log aplikacyjny może zawierać adres wywołanego modułu, komunikat lub czas odpowiedzi, lecz nie zawsze zapisuje pełną instrukcję wysłaną do bazy. Z kolei monitorowanie chwilowe pokazuje stan bieżący, a Query Store służy przede wszystkim do analizy historii. Dzięki temu można porównać zachowanie tego samego zapytania przed i po wdrożeniu zmiany, nawet jeśli problem nie występuje podczas aktualnego pomiaru. Nie należy również utożsamiać tekstu zapytania z danymi użytkowników. W zależności od sposobu budowania instrukcji w treści mogą znajdować się parametry, nazwy obiektów lub wartości zapisane bezpośrednio w poleceniu. Z tego powodu zakres dostępu do Query Store powinien być ograniczony do osób, które zajmują się utrzymaniem i analizą baz danych. Przy ocenie wyników trzeba uwzględnić politykę ochrony danych, sposób parametryzacji oraz ustawienia retencji. Store Query Text – typowe problemy i błędne interpretacjeJednym z częstszych problemów jest przekonanie, że każda odmienna wartość w zapytaniu musi oznaczać osobny wpis. W rzeczywistości sposób prezentowania i agregowania instrukcji zależy od normalizacji, parametrów oraz konfiguracji przechowywania danych. Wysoka liczba podobnych wpisów może wskazywać na niespójne generowanie poleceń przez aplikację, brak parametryzacji albo różnice składniowe, które utrudniają wspólną analizę. Z drugiej strony nadmierne ujednolicenie może ukryć fakt, że różne zakresy parametrów prowadzą do odmiennych planów. Inną trudnością jest utożsamianie najdłuższego tekstu z największym obciążeniem. Długie polecenie nie musi być wolne, a krótka instrukcja może powodować znaczące zużycie procesora lub odczyt dużej ilości danych. Przy ocenie należy zestawiać treść z czasem wykonania, liczbą uruchomień, odczytami logicznymi, zużyciem pamięci oraz stabilnością planu. Istotne jest także rozróżnienie średniej od wartości maksymalnej. Zapytanie może mieć dobrą średnią, ale sporadycznie wykonywać się bardzo długo. Problemy może powodować również ograniczony okres przechowywania. Jeżeli ustawiono krótką retencję albo usuwanie danych odbywa się zbyt często, historia potrzebna do porównania może przestać być dostępna. Wtedy nie da się łatwo sprawdzić, czy obecny plan jest nowy, czy tylko ponownie pojawił się po wcześniejszych zmianach. Należy kontrolować rozmiar Query Store, stan jego działania i okres, z którego pochodzą obserwacje. Warto pamiętać, że Store Query Text nie naprawia zapytań automatycznie. Dostarcza materiału diagnostycznego, lecz poprawa wymaga osobnej oceny indeksów, statystyk, konstrukcji instrukcji, parametrów, blokad i obciążenia całego środowiska. Wymuszenie wybranego planu może być pomocne w określonej sytuacji, ale nie powinno zastępować ustalenia przyczyny. Plan odpowiedni dziś może stać się niekorzystny po zmianie rozkładu danych. Store Query Text – praktyczne wskazówki do analizyAnalizę warto rozpocząć od ustalenia okresu, w którym pojawiło się spowolnienie. Następnie można wyszukać zapytania o zwiększonym czasie trwania, rosnącej liczbie odczytów albo wyraźnej zmianie planu. Po odnalezieniu wpisu należy sprawdzić pełną treść instrukcji, a nie tylko jej skrócony podgląd. Pomocne jest zestawienie tekstu z planami uznawanymi wcześniej za prawidłowe oraz z planami używanymi w czasie wystąpienia problemu. Przydatne jest zachowanie kolejności działań. Najpierw określa się, czy problem dotyczy jednego zapytania, wielu instrukcji tego samego modułu, czy całego obciążenia. Następnie porównuje się zmiany w treści, parametrach i planach. Dopiero później rozważa się modyfikację indeksu, aktualizację statystyk, zmianę konstrukcji zapytania lub ograniczenie niepotrzebnych kolumn. Takie podejście zmniejsza ryzyko naprawiania niewłaściwego elementu. W przypadku aplikacji generujących zapytania należy sprawdzić, czy treść jest budowana w sposób przewidywalny. Powtarzalny wzorzec ułatwia agregację oraz porównywanie wyników, natomiast przypadkowe składanie instrukcji może zwiększać liczbę wariantów i utrudniać ocenę. Dobrą praktyką jest także dokumentowanie momentu wdrożenia zmian, aktualizacji struktury bazy i modyfikacji konfiguracji. Bez takiego kontekstu różnica w planie może być zauważona, lecz trudniej wskazać jej źródło. Przy pracy z historią Query Store należy unikać pochopnego usuwania danych. Przed czyszczeniem warto zachować wyniki istotnych zapytań, plany i przedziały czasowe. Jeżeli magazyn zajmuje dużo miejsca, można najpierw ustalić, które dane są najstarsze lub najmniej przydatne, a potem dopasować retencję do potrzeb analitycznych. Wszelkie działania powinny być wykonywane z uwzględnieniem kopii zapasowych, uprawnień i zasad obowiązujących w danym środowisku. Store Query Text – kiedy zgłosić się do serwisuDo serwisu warto zgłosić się wtedy, gdy analiza Store Query Text ujawnia powtarzające się spowolnienia, nagłe zmiany planów, długie blokowanie operacji albo trudności z ustaleniem, które zapytanie odpowiada za obciążenie. Pomocna może być także konsultacja, gdy Query Store nie gromadzi oczekiwanych danych, historia jest niepełna lub wyniki różnią się od obserwacji aplikacji. Przed przekazaniem urządzenia lub nośnika należy zabezpieczyć dane i opisać objawy, a także wskazać przybliżony moment ich wystąpienia. W takich sytuacjach Warszawskie Pogotowie Komputerowe 24/7 może zostać wybrane jako miejsce konsultacji dotyczącej problemów z komputerem i oprogramowaniem. Warto przekazać opis komunikatów, zrzuty wyników oraz informacje o ostatnich zmianach, bez ujawniania haseł i poufnych danych. W przypadku analizy wymagającej dostępu do systemu powinno się wcześniej ustalić zakres uprawnień oraz sposób ochrony plików. Rzetelna ocena Store Query Text polega na połączeniu treści zapytań, planów, statystyk i kontekstu działania, dlatego sam pojedynczy wpis nie zawsze wystarcza do postawienia trafnej diagnozy. |