| Termin | Definicja |
|---|---|
| Forced Plan Invalidation | Forced Plan Invalidation to unieważnienie wcześniej wymuszonego planu wykonania, np. w wyniku zmiany struktury tabeli. Na czym polega unieważnienie wymuszonego planu w SQL ServerForced Plan Invalidation oznacza sytuację, w której plan wykonania zapisany w Query Store i wcześniej wymuszony dla określonego zapytania przestaje być możliwy do zastosowania albo traci zgodność z aktualnym stanem obiektów bazy danych. W SQL Server wymuszenie planu ma za zadanie nakazać optymalizatorowi korzystanie z wybranego planu zamiast swobodnego wyboru innego wariantu. Nie jest to jednak obietnica, że plan pozostanie użyteczny niezależnie od zmian w schemacie, indeksach, typach danych czy dostępności obiektów. Unieważnienie wymuszonego planu nie jest tym samym co zwykłe usunięcie planu z pamięci podręcznej. SQL Server może ponownie skompilować zapytanie, ponieważ zmieniły się statystyki albo zależności schematu, a jednocześnie nadal próbować zastosować plan wymuszony zapisany w Query Store. Do invalidacji dochodzi wtedy, gdy ten konkretny plan nie może zostać poprawnie odtworzony lub wykonany w aktualnym środowisku. W takiej sytuacji system może zgłosić niepowodzenie wymuszenia i dopuścić wybór innego planu przez optymalizator. Zmiany schematu, indeksów i zależności zapytaniaTypowym powodem unieważnienia jest zmiana struktury tabeli, do której odwołuje się zapytanie. Znaczenie mogą mieć między innymi usunięcie kolumny używanej w predykacie, zmianę typu danych, zmianę klucza indeksu albo usunięcie indeksu, którego istnienie było istotne dla wybranego planu. Jeżeli plan zawiera operator wykorzystujący obiekt, który nie istnieje lub nie pasuje już do definicji zapytania, SQL Server nie może bezwarunkowo zastosować starego planu. Wpływ mogą mieć także zmiany widoków, funkcji, procedur składowanych i innych obiektów zależnych. Wymuszony plan jest związany z konkretnym zapytaniem oraz jego identyfikacją w Query Store, ale sam plan odzwierciedla określony układ tabel, indeksów, typów i relacji dostępnych podczas kompilacji. Zmiana schematu może więc spowodować, że plan pozostanie zapisany w historii, lecz nie będzie już prawidłowym opisem możliwego wykonania. Sam fakt obecności planu w Query Store nie oznacza, że plan nadal jest wykonalny. Jak rozpoznać nieudane wymuszenie planuAnalizę należy rozpocząć od ustalenia, czy zapytanie rzeczywiście ma wymuszony plan. W Query Store można sprawdzić właściwość Warto porównać plan wymuszony z planem aktualnie używanym i sprawdzić ostatnie zmiany schematu, indeksów oraz statystyk. Należy również przeanalizować, czy zapytanie nie zostało zmienione w sposób powodujący powstanie innego identyfikatora zapytania. W SQL Server nawet pozornie niewielka modyfikacja tekstu, kontekstu lub parametrów może wpłynąć na sposób zapisania zapytania w Query Store. Jeżeli wymuszenie przestało działać po zmianie tabeli, nie należy od razu ponownie wymuszać starego planu. Najpierw trzeba potwierdzić, że wszystkie obiekty i zależności wymagane przez ten plan nadal istnieją. Postępowanie po invalidacji wymuszonego planuNaprawa polega na ustaleniu aktualnego, poprawnego planu dla konkretnego zapytania, a nie na mechanicznym przywracaniu historycznej wersji. Gdy zmiana schematu była zamierzona, poprzedni plan może być już nieaktualny. W takim przypadku należy ocenić plan wybrany przez optymalizator, sprawdzić aktualne statystyki i zweryfikować, czy zapytanie korzysta z właściwych indeksów. Jeśli dostępny jest poprawny plan zapisany w Query Store, można rozważyć jego wymuszenie za pomocą procedur Query Store przeznaczonych do zarządzania planami, takich jak W przypadku utrzymujących się błędów konieczne jest sprawdzenie definicji obiektów, planów wykonania, parametrów zapytania i komunikatów SQL Server. Czasem właściwym rozwiązaniem jest usunięcie wymuszenia procedurą |