Funkcja planowania planu zapytania w sklepie nie działa

12

Wygląda na to, że funkcja wymuszania planu sklepu z zapytaniami nie egzekwuje planu.

Znam sklep z zapytaniami - wymuszony nie zawsze oznacza wymuszony ; jednak mój plan może się nie zmienić nieznacznie, ale optymalizator zapytań może nadal wybierać nieprawidłowe indeksy, opcje pętli itp.

Zasadniczo: nie honoruje mojego wyboru planu wymuszonego. Wymusiłem wiele planów i to po prostu nie działa .

  1. Kiedy patrzę, jest 0 błędów lub powodów sys.query_store_plan force_failure_count.
  2. Wydarzenie rozszerzone query_store_plan_forcing_failedniczego nie daje. 0 wydarzeń.

Na przykład plan, który został narzucony 20.09. Tylko 1 kompilacja używała planu wymuszonego.

Plany zapytania

Plany różnią się bardzo: jeden z wykorzystaniem sprzężenia mieszania z INDEKSEM 1, drugi z użyciem sprzężenia pętli z INDEKSEM 2.

Różne plany

Wersja: Microsoft SQL Server 2016 (SP1-GDR) (KB3210089) - 13.0.4202.2 (X64)

Czego tu brakuje?

Janis Veinbergs
źródło

Odpowiedzi:

16

From sys.query_store_plan (Transact-SQL) ( wyróżnienie dodane)

Zaplanuj wymuszanie ograniczeń

Query Store ma mechanizm wymuszający na narzędziu Query Optimizer korzystanie z określonego planu wykonania. Istnieją jednak pewne ograniczenia, które mogą uniemożliwić wdrożenie planu .

Po pierwsze, jeśli plan zawiera następujące konstrukcje:

  • Wstaw instrukcję zbiorczą.
  • Odniesienie do tabeli zewnętrznej
  • Rozproszone zapytania lub operacje pełnotekstowe
  • Zastosowanie zapytań globalnych
  • Kursory
  • Nieprawidłowa specyfikacja łączenia gwiazd

Używasz kursora.


Zamiast tego często możesz wymusić plan kursora za pomocą przewodnika po planach. Zobacz Korzystanie z PLANU KORZYSTANIA Z Wskazówki dotyczące zapytań w zapytaniach z kursorami .

I tak, zgadzam się, że obecna sytuacja nie zapewnia najlepszego doświadczenia użytkownika. Spodziewałbym się, że próba narzucenia planu czegoś, czego nie można (obecnie) wymusić, spowodowałaby błąd lub ostrzeżenie albo coś zapisała. Możesz zarejestrować element Feedback, aby poprosić o ulepszenie w tym obszarze.


Począwszy od SQL 2019 CTP 2.3 wymuszanie planu wykonywania zapytań dla kursorów Fast Forward i Static są obsługiwane

Magazyn zapytań obsługuje teraz możliwość wymuszania planów wykonania zapytań dla szybkiego przewijania do przodu i statycznych kursorów T-SQL i API. Wymuszanie jest teraz obsługiwane za sp_query_store_force_planpośrednictwem raportów magazynu zapytań SQL Server Management Studio.

Paul White 9
źródło