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

Store Plan Forcing

Termin Definicja
Store Plan Forcing

Store Plan Forcing to opcja Query Store zapisująca informację o wymuszonym planie wykonania zapytania.

Znaczenie Store Plan Forcing w SQL Server

Store Plan Forcing oznacza mechanizm wymuszania planu wykonania zapytania przechowywanego w Query Store silnika Microsoft SQL Server. Query Store rejestruje między innymi zapytania, ich plany wykonania oraz statystyki czasu wykonywania. Jeżeli dla tego samego zapytania SQL Server utworzył kilka planów, administrator może wskazać plan, który ma być używany przy kolejnych kompilacjach zapytania. Informacja o takim wymuszeniu jest zapisywana w metadanych Query Store i może być później odczytana podczas analizy wydajności.

Wymuszenie planu odnosi się do konkretnego identyfikatora zapytania query_id oraz konkretnego identyfikatora planu plan_id. Nie jest to ogólne ustawienie dla wszystkich zapytań o podobnej treści i nie zmienia tekstu zapytania. Mechanizm dotyczy planu wybranego przez optymalizator zapytań, czyli między innymi sposobu dostępu do indeksów, kolejności operacji, metod łączenia tabel oraz szacowania kosztu wykonania.

Jak działa wymuszenie planu z Query Store

Plan można wymusić procedurą systemową sys.sp_query_store_force_plan, podając identyfikator zapytania i identyfikator planu. SQL Server zapisuje wtedy relację między zapytaniem a wskazanym planem. Stan wymuszenia można sprawdzać w widoku katalogowym sys.query_store_plan, między innymi za pomocą kolumny is_forced_plan. W praktyce pozwala to ustalić, czy dany plan jest obecnie oznaczony jako wymuszony, bez polegania wyłącznie na obserwacji pojedynczego wykonania.

Wymuszenie wpływa na wybór planu podczas kolejnych kompilacji lub rekonfiguracji planu dla danego zapytania. Nie oznacza jednak ręcznego wykonania każdej instrukcji ani wyłączenia wszystkich mechanizmów optymalizacji. SQL Server nadal musi sprawdzić, czy plan może zostać zastosowany w aktualnym środowisku. Jeżeli wymuszenie nie powiedzie się, Query Store przechowuje informacje o błędzie. Przydatne są w tym celu między innymi kolumny force_failure_count oraz last_force_failure_reason_desc w widoku sys.query_store_plan.

Monitorowanie i cofanie Store Plan Forcing

Ocena wymuszonego planu powinna obejmować nie tylko jego obecność w Query Store, lecz także rzeczywiste statystyki wykonania. Widoki sys.query_store_query, sys.query_store_plan i sys.query_store_runtime_stats umożliwiają połączenie informacji o zapytaniu, planie oraz przedziałach czasowych, w których zbierano dane wykonawcze. Warto porównać czas trwania, zużycie procesora, liczbę odczytów logicznych i liczbę wykonań przed wymuszeniem oraz po nim. Sam fakt oznaczenia planu jako wymuszonego nie dowodzi poprawy wydajności.

Plan można cofnąć procedurą sys.sp_query_store_unforce_plan, również wskazując query_id i plan_id. Po usunięciu wymuszenia SQL Server może ponownie wybierać plan zgodnie z aktualnym procesem optymalizacji. Przed cofnięciem należy sprawdzić, czy problem wynikał z regresji planu, zmiany rozkładu danych, nieaktualnych statystyk, zmian indeksów albo innego czynnika. Wymuszanie planu jest sposobem ograniczenia skutków regresji, ale nie zastępuje analizy przyczyny oraz kontroli zmian w schemacie i zapytaniach.

Znaczenie dla diagnostyki SQL Server

Store Plan Forcing jest szczególnie istotne przy diagnozowaniu sytuacji, w której zapytanie po zmianie planu wykonuje się wolniej niż wcześniej. Query Store pozwala odnaleźć wcześniejszy plan, porównać go z planem aktualnym i ustalić, czy różnica koreluje ze wzrostem czasu trwania albo zużycia zasobów. Administrator może tymczasowo wymusić stabilniejszy plan, aby ograniczyć wpływ regresji, a następnie przygotować trwałą korektę, na przykład zmianę indeksu, aktualizację statystyk lub modyfikację zapytania.

Wymuszony plan powinien być okresowo weryfikowany, ponieważ dane, indeksy, parametry i obciążenie bazy mogą się zmieniać. Plan korzystny dla jednego zakresu wartości parametrów nie musi być optymalny dla innego zakresu. Należy także rozróżnić plan zapisany w Query Store od planu aktualnie znajdującego się w pamięci podręcznej: Query Store przechowuje historię i metadane, natomiast użycie konkretnego planu w danym momencie zależy od procesu kompilacji SQL Server oraz możliwości zastosowania wymuszenia.

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