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

SYS.query_store_plan

Termin Definicja
SYS.query_store_plan

sys.query_store_plan zawiera zarejestrowane plany wykonania zapytań przechowywane przez Query Store.

Rola widoku sys.query_store_plan w SQL Server

sys.query_store_plan jest katalogowym widokiem systemowym silnika Microsoft SQL Server. Udostępnia informacje o planach wykonania zarejestrowanych przez Query Store dla zapytań uruchamianych w konkretnej bazie danych. Jeden identyfikator plan_id oznacza pojedynczy plan zapisany w Query Store, natomiast query_id łączy ten plan z logicznie rozpoznanym zapytaniem. To rozróżnienie ma znaczenie, ponieważ to samo zapytanie może otrzymać kilka różnych planów po zmianie statystyk, indeksów, parametrów, ustawień optymalizatora albo wersji danych.

Widok nie służy do ręcznego tworzenia planów. Jest źródłem danych diagnostycznych dla administratora SQL Server, który chce sprawdzić, jak optymalizator kompilował dane zapytanie i który wariant planu był używany. Query Store musi być włączony dla danej bazy, a jego konfiguracja określa między innymi czas przechowywania danych oraz sposób zbierania informacji. Wpis w sys.query_store_plan opisuje plan zapisany w repozytorium Query Store, a nie dowolny chwilowy stan pamięci podręcznej planów.

Najważniejsze informacje przechowywane przy planie

Wiersz widoku zawiera między innymi identyfikator planu, identyfikator zapytania, skrót planu oraz czas ostatniej kompilacji i ostatniego wykonania. Kolumna query_plan przechowuje plan w postaci XML Showplan, który można analizować w SQL Server Management Studio lub w innych narzędziach obsługujących format planów SQL Server. XML pokazuje operatory, kolejność ich wykonania, użyte indeksy, estymowane i rzeczywiste liczności w zakresie dostępnych danych oraz właściwości operatorów.

Widok udostępnia również zagregowane miary wykonania przypisane do planu, takie jak średni, minimalny, maksymalny i ostatni czas trwania, czas procesora, odczyty logiczne i fizyczne, zapisy logiczne, liczba zwracanych wierszy oraz użycie pamięci. Wartości zagregowane należy interpretować razem z liczbą wykonań i przedziałem czasu. Sama wysoka średnia nie wskazuje jeszcze przyczyny problemu, a pojedyncze ostatnie wykonanie może odbiegać od długoterminowego profilu zapytania.

W zależności od wersji SQL Server i dostępnych funkcji Query Store widok może zawierać także informacje o wymuszeniu planu, nieudanej próbie wymuszenia oraz liczbie kompilacji. Wartości opisujące powód nieudanego wymuszenia pomagają odróżnić sytuację, w której plan został formalnie oznaczony jako wymuszony, od sytuacji, w której silnik nie mógł zastosować go podczas kompilacji.

Łączenie planu z zapytaniem i statystykami

Do odtworzenia pełnego kontekstu nie należy analizować sys.query_store_plan w izolacji. Widok można połączyć z sys.query_store_query po kolumnie query_id, aby sprawdzić informacje o zapytaniu, jego kontekście kompilacji i powiązaniu z obiektem. Następnie sys.query_store_query można powiązać z sys.query_store_query_text, korzystając z query_sql_text_id, aby odczytać tekst zapytania przechowywany przez Query Store. Statystyki czasowe i agregaty z poszczególnych przedziałów są dostępne w widokach takich jak sys.query_store_runtime_stats oraz sys.query_store_runtime_stats_interval.

Przykładowe zapytanie diagnostyczne może zwrócić identyfikator planu, informację o wymuszeniu i fragment XML planu:

SELECT plan_id, query_id, is_forced_plan, is_forced_plan_failure, last_execution_time, query_plan FROM sys.query_store_plan WHERE query_id = 42;

Identyfikator query_id w tym przykładzie jest tylko warunkiem wyszukiwania i musi odpowiadać rzeczywistemu wpisowi w danej bazie. Porównując kilka wierszy dla tego samego zapytania, można ustalić, czy pogorszenie wydajności nastąpiło po zmianie planu. Trzeba jednak sprawdzić również okresy statystyk, parametry, rozmiar tabel, blokowanie i obciążenie serwera, ponieważ sam fakt istnienia nowego planu nie dowodzi, że jest on jedyną przyczyną wolnego działania.

Znaczenie podczas diagnostyki komputerowej i pracy serwisowej

Problemy widoczne w aplikacji uruchomionej na laptopie lub komputerze PC mogą wynikać z wolnych zapytań SQL Server, mimo że lokalny sprzęt działa poprawnie. Analiza sys.query_store_plan pozwala administratorowi sprawdzić, czy opóźnienie jest związane z konkretnym planem, nadmiernymi odczytami, wzrostem czasu CPU albo zmianą sposobu dostępu do tabel. Dopiero po takim rozdzieleniu przyczyny można ocenić, czy potrzebna jest diagnostyka konfiguracji systemu, sieci, dysku, aplikacji czy samej bazy danych.

Przy pracy z komputerem użytkownika warto zebrać powtarzalny objaw, czas wystąpienia i nazwę operacji, a następnie zestawić te dane z czasem ostatniego wykonania oraz statystykami planu w Query Store. Nie należy usuwać wpisów ani wymuszać planu bez oceny skutków dla innych parametrów i obciążeń. Wymuszenie planu jest zmianą administracyjną po stronie SQL Server, a nie naprawą podzespołu laptopa czy komputera PC. Diagnostyka sprzętu powinna obejmować temperatury, pamięć, nośnik danych i połączenie sieciowe, gdy objawy występują także poza badaną aplikacją.