Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Query Id

Termin Definicja
Query Id

Query Id to identyfikator zapytania w Query Store, wykorzystywany przy analizie jego planów wykonania.

Co oznacza Query Id w SQL Server

Query Id to numeryczny identyfikator zapytania przechowywanego w funkcji Query Store programu Microsoft SQL Server. W katalogowym widoku sys.query_store_query pole query_id ma typ bigint i jest używane do jednoznacznego wskazania rekordu opisującego zapytanie w obrębie konkretnej bazy danych. Identyfikator nie jest numerem nadanym przez aplikację ani fragmentem tekstu SQL. Służy silnikowi oraz administratorowi do powiązania zapytania z jego tekstem, kontekstem kompilacji, planami wykonania i zebranymi statystykami.

Query Id odnosi się do logicznie rozpoznanego zapytania, a nie do pojedynczego uruchomienia. SQL Server może zarejestrować kilka planów wykonania dla tego samego Query Id, na przykład po zmianie wartości parametrów, indeksów, statystyk lub ustawień wpływających na kompilację. Z tego powodu sam identyfikator nie określa, jaki plan został użyty podczas konkretnego wykonania. Do analizy planu potrzebne są dodatkowo dane z widoków Query Store dotyczących planów i statystyk wykonania.

Powiązanie z tekstem zapytania i planem

W Query Store rekord z Query Id jest powiązany z tekstem SQL przechowywanym w widoku sys.query_store_query_text za pośrednictwem pola query_text_id. Rekord zawiera również między innymi identyfikator obiektu, którego dotyczy zapytanie, oraz context_settings_id, opisujący ustawienia sesji mające znaczenie dla kompilacji. Dwa podobnie wyglądające zapytania mogą otrzymać różne identyfikatory, jeśli różni je kontekst kompilacji albo sposób, w jaki SQL Server rozpoznaje ich strukturę.

Plany powiązane z zapytaniem można znaleźć w widoku sys.query_store_plan, gdzie znajduje się między innymi plan_id, query_id, czas utworzenia planu, czas ostatniego użycia oraz informacje o wymuszeniu planu. Statystyki czasowe i licznikowe są dostępne w widokach takich jak sys.query_store_runtime_stats oraz odpowiadających im widokach agregujących według przedziałów czasu. Analiza wymaga połączenia tych danych: Query Id wskazuje zapytanie, plan_id wskazuje konkretny plan, a statystyki pokazują jego zachowanie w czasie.

Jak wykorzystać Query Id podczas diagnostyki

Administrator może rozpocząć wyszukiwanie od zapytania podobnego do: SELECT q.query_id, t.query_sql_text, q.object_id, q.last_execution_time FROM sys.query_store_query AS q JOIN sys.query_store_query_text AS t ON t.query_text_id = q.query_text_id ORDER BY q.last_execution_time DESC;. Takie zestawienie pozwala powiązać identyfikator z tekstem zapytania i określić, kiedy dany rekord był ostatnio wykonywany. W praktyce warto ograniczyć wynik do interesującego zakresu czasu albo filtrować po konkretnym Query Id, ponieważ Query Store może zawierać dużą liczbę wpisów.

Query Id jest szczególnie przydatny przy porównywaniu planów po zmianie wydania aplikacji, indeksów lub statystyk. Jeżeli czas wykonania wzrósł, należy sprawdzić, czy dla tego samego identyfikatora pojawił się nowy plan, czy wzrosła liczba odczytów, czy zmieniła się liczba wykonywań oraz czy problem dotyczy średniej, wartości maksymalnej czy pojedynczego incydentu. Nie wolno utożsamiać samego wzrostu Query Id z awarią: identyfikator jest kluczem ewidencyjnym, a nie miarą wydajności.

Wymuszenie planu, jeśli jest dostępne i uzasadnione wynikami pomiarów, również operuje na relacji zapytanie–plan, a więc pośrednio na Query Id. Przed taką zmianą trzeba potwierdzić, że plan jest poprawny dla aktualnych danych i obciążeń. Wymuszony plan może ograniczyć skutki niekorzystnej zmiany, ale nie usuwa przyczyny związanej na przykład z brakiem indeksu, nieaktualnymi statystykami, błędnym typem parametru albo zmianą logiki zapytania.

Znaczenie identyfikatora w serwisowej diagnozie SQL Server

W środowisku wykorzystującym Microsoft SQL Server Query Id ułatwia przekazanie konkretnego przypadku między osobą obserwującą objawy a administratorem analizującym bazę. Zamiast opisywać niejednoznacznie „wolne zapytanie”, można wskazać numer identyfikatora, tekst SQL, plan wykonania i przedział czasu, w którym wystąpiło pogorszenie. Diagnostyka powinna obejmować także blokady, obciążenie procesora, czas oczekiwania, dostępne indeksy oraz ustawienia Query Store, ponieważ sam wpis w katalogu nie pokazuje pełnego stanu serwera.

Przy naprawie laptopa lub komputera PC problem z Query Id zwykle nie oznacza uszkodzenia podzespołu. Jeżeli użytkownik korzysta z narzędzia administracyjnego SQL Server na komputerze lokalnym, serwis może sprawdzić działanie systemu, połączenie sieciowe, instalację klienta, sterowniki, konfigurację środowiska i poprawność pracy dysku. Właściwa interpretacja identyfikatora oraz zmiana planu lub konfiguracji bazy pozostaje zadaniem wykonywanym po stronie właściwej instancji SQL Server.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę