Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
usługi Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Database w usłudze Microsoft Fabric
Zawiera informacje o każdym planie wykonywania skojarzonym z zapytaniem.
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
plan_id |
bigint | Klucz podstawowy. |
query_id |
bigint | Klucz obcy. Sprzężenia do sys.query_store_query (Transact-SQL). |
plan_group_id |
bigint | Identyfikator grupy planów. Zapytania kursora zwykle wymagają wielu planów (wypełniania i pobierania). Wypełnij i pobierz plany, które są kompilowane razem, znajdują się w tej samej grupie.0 oznacza, że plan nie należy do grupy. |
engine_version |
nvarchar(32) | Wersja aparatu używanego do kompilowania planu w <major>.<minor>.<build>.<revision> formacie. |
compatibility_level |
smallint | Poziom zgodności bazy danych, do której odwołuje się baza danych w zapytaniu. |
query_plan_hash |
binary(8) | Skrót MD5 pojedynczego planu. |
query_plan |
nvarchar(max) | Showplan XML dla planu zapytania. |
is_online_index_plan |
bit | Plan został użyty podczas kompilacji indeksu online. Nuta: Usługa Azure Synapse Analytics zawsze zwraca wartość 0. |
is_trivial_plan |
bit | Plan to trywialny plan (dane wyjściowe na etapie 0 optymalizatora zapytań). Nuta: Usługa Azure Synapse Analytics zawsze zwraca wartość 0. |
is_parallel_plan |
bit | Plan jest równoległy. Nuta: Usługa Azure Synapse Analytics zawsze zwraca wartość 1. |
is_forced_plan |
bit | Plan jest oznaczony jako wymuszony, gdy użytkownik wykonuje procedurę sys.sp_query_store_force_planskładowaną . Mechanizm wymuszania nie gwarantuje , że ten dokładny plan będzie używany dla zapytania, do którego odwołuje się query_idelement . Planowanie wymuszania powoduje ponowne skompilowanie zapytania i zazwyczaj tworzy dokładnie taki sam lub podobny plan do planu, do których odwołuje się plan_idprogram . Jeśli wymuszanie planu nie powiedzie się, force_failure_count jest zwiększane i last_force_failure_reason jest wypełniane przyczyną niepowodzenia.Nuta: Usługa Azure Synapse Analytics zawsze zwraca wartość 0. |
is_natively_compiled |
bit | Plan obejmuje natywnie skompilowane procedury zoptymalizowane pod kątem pamięci. (0 = FALSE, 1 = TRUE).Nuta: Usługa Azure Synapse Analytics zawsze zwraca wartość 0. |
force_failure_count |
bigint | Liczba przypadków, w których wymuszanie tego planu nie powiodło się. Można ją zwiększać tylko wtedy, gdy zapytanie jest ponownie skompilowane (nie w każdym wykonaniu). Resetowanie do 0 każdego czasu is_forced_plan jest zmieniane z FALSE na TRUE.Nuta: Usługa Azure Synapse Analytics zawsze zwraca wartość 0. |
last_force_failure_reason |
int | Przyczyna niepowodzenia wymuszania planu. 0: brak błędu, w przeciwnym razie numer błędu, który spowodował wymuszenie niepowodzenia 3617: COMPILATION_ABORTED_BY_CLIENT8637: ONLINE_INDEX_BUILD8675: OPTIMIZATION_REPLAY_FAILED8683: INVALID_STARJOIN8684: TIME_OUT8689: NO_DB8690: HINT_CONFLICT8691: SETOPT_CONFLICT8694: DQ_NO_FORCING_SUPPORTED8698: NO_PLAN8712: NO_INDEX8713: VIEW_COMPILE_FAILED<inną wartość>: GENERAL_FAILURENuta: Usługa Azure Synapse Analytics zawsze zwraca wartość 0. |
last_force_failure_reason_desc |
nvarchar(128) | Tekstowy opis elementu last_force_failure_reason.COMPILATION_ABORTED_BY_CLIENT: klient przerwał kompilację zapytania przed jego ukończeniemONLINE_INDEX_BUILD: zapytanie próbuje zmodyfikować dane, gdy tabela docelowa ma indeks tworzony w trybie onlineOPTIMIZATION_REPLAY_FAILED: Nie można wykonać skryptu odtwarzania optymalizacji.INVALID_STARJOIN: plan zawiera nieprawidłową specyfikację StarJoinTIME_OUT: Optymalizator przekroczył liczbę dozwolonych operacji podczas wyszukiwania planu określonego przez wymuszony planNO_DB: Baza danych określona w planie nie istniejeHINT_CONFLICT: Nie można skompilować kwerendy, ponieważ plan powoduje konflikt z wskazówką zapytaniaDQ_NO_FORCING_SUPPORTED: Nie można wykonać zapytania, ponieważ plan powoduje konflikt z użyciem zapytań rozproszonych lub operacji pełnotekstowych.NO_PLAN: Procesor zapytań nie może utworzyć planu zapytania, ponieważ nie można zweryfikować wymuszonego planu jako prawidłowego dla zapytaniaNO_INDEX: Indeks określony w planie już nie istniejeVIEW_COMPILE_FAILED: Nie można wymusić działania planu zapytania z powodu problemu w widoku indeksowanym, do którego odwołuje się planGENERAL_FAILURE: ogólny błąd wymuszania (nieobjęte innymi przyczynami)Nuta: Usługa Azure Synapse Analytics zawsze zwraca wartość NONE. |
count_compiles |
bigint | Planowanie statystyk kompilacji. |
initial_compile_start_time |
datetimeoffset | Planowanie statystyk kompilacji. |
last_compile_start_time |
datetimeoffset | Planowanie statystyk kompilacji. |
last_execution_time |
datetimeoffset | Czas ostatniego wykonania odnosi się do czasu ostatniego zakończenia zapytania/planu. |
avg_compile_duration |
float | Planowanie statystyk kompilacji w mikrosekundach. Podziel przez 1000 000, aby uzyskać sekundy. |
last_compile_duration |
bigint | Planowanie statystyk kompilacji w mikrosekundach. Podziel przez 1000 000, aby uzyskać sekundy. |
plan_forcing_type |
int |
Dotyczy: SQL Server 2017 (14.x) i nowsze wersje Planowanie wymuszania typu. 0: NONE1: MANUAL2: AUTO |
plan_forcing_type_desc |
nvarchar(60) |
Dotyczy: SQL Server 2017 (14.x) i nowsze wersje Opis tekstu elementu plan_forcing_type.NONE: Brak wymuszania planuMANUAL: Planowanie wymuszone przez użytkownikaAUTO: Planowanie wymuszone przez automatyczne dostrajanie. |
has_compile_replay_script |
bit |
Dotyczy: SQL Server 2022 (16.x) i nowsze wersje Wskazuje, czy plan ma skojarzony skrypt odtwarzania optymalizacji: 0 = brak skryptu odtwarzania optymalizacji (żaden lub nawet nieprawidłowy). 1 = zarejestrowany skrypt odtwarzania optymalizacji. Nie dotyczy usługi Azure Synapse Analytics. |
is_optimized_plan_forcing_disabled |
bit |
Dotyczy: SQL Server 2022 (16.x) i nowsze wersje Wskazuje, czy zoptymalizowane wymuszanie planu zostało wyłączone dla planu: 0 = wyłączone. 1 = nie jest wyłączone. Nie dotyczy usługi Azure Synapse Analytics. |
plan_type |
int |
Dotyczy: SQL Server 2022 (16.x) i nowsze wersje Typ planu. 0: Skompilowany plan 1: Plan dyspozytora 2. Plan wariantu zapytania Nie dotyczy usługi Azure Synapse Analytics. |
plan_type_desc |
nvarchar(120) |
Dotyczy: SQL Server 2022 (16.x) i nowsze wersje Opis tekstowy typu planu. Skompilowany plan: wskazuje, że plan jest planem niezwiązanym z parametrami zoptymalizowanym pod kątem planu Plan dyspozytora: wskazuje, że plan jest planem zoptymalizowanym pod kątem parametrów planu dyspozytora Plan wariantu zapytania: wskazuje, że plan jest planem zoptymalizowanym pod kątem wariantu zapytania z uwzględnieniem parametrów Nie dotyczy usługi Azure Synapse Analytics. |
Uwagi
Więcej niż jeden plan można wymusić, gdy magazyn zapytań dla replik pomocniczych jest włączony.
W usłudze Azure Synapse Analytics użycie kolumn has_compile_replay_script, is_optimized_plan_forcing_disabledplan_typeplan_type_desc powoduje Invalid Column Name wystąpienie błędu, ponieważ nie są obsługiwane. Zobacz Przykład B , aby zapoznać się z przykładem użycia sys.query_store_plan w usłudze Azure Synapse Analytics.
Planowanie wymuszania ograniczeń
Magazyn zapytań ma mechanizm wymuszania optymalizatora zapytań w celu korzystania z określonego planu wykonywania. Istnieją jednak pewne ograniczenia, które mogą uniemożliwić wymuszanie planu.
Po pierwsze, jeśli plan zawiera następujące konstrukcje:
- Wstaw instrukcję zbiorczą
- Odwołanie do tabeli zewnętrznej
- Zapytania rozproszone lub operacje pełnotekstowe
- Korzystanie z zapytań elastycznych
- Kursory dynamiczne lub kluczowe
- Nieprawidłowa specyfikacja sprzężenia gwiazdy
Uwaga / Notatka
Usługi Azure SQL Database i SQL Server 2019 i nowsze wersje kompilacji obsługują plan wymuszania dla kursorów statycznych i szybkich do przodu.
Po drugie, gdy obiekty, na których opiera się plan, nie są już dostępne:
- Baza danych (jeśli baza danych, z której pochodzi plan, już nie istnieje)
- Indeks (już nie istnieje lub wyłączony)
Na koniec problemy z samym planem:
- Nie jest to legalne w przypadku kwerendy
- Optymalizator zapytań przekroczył liczbę dozwolonych operacji
- Niepoprawnie sformułowany kod XML planu
Permissions
VIEW DATABASE STATE Wymaga uprawnienia.
Przykłady
A. Znajdź przyczynę, dla której program SQL Server nie może wymusić planu za pośrednictwem usług QDS
Zwróć uwagę na kolumny last_force_failure_reason_desc i:force_failure_count
SELECT TOP 1000
p.query_id,
p.plan_id,
p.last_force_failure_reason_desc,
p.force_failure_count,
p.last_compile_start_time,
p.last_execution_time,
q.last_bind_duration,
q.query_parameterization_type_desc,
q.context_settings_id,
c.set_options,
c.STATUS
FROM sys.query_store_plan p
INNER JOIN sys.query_store_query q
ON p.query_id = q.query_id
INNER JOIN sys.query_context_settings c
ON c.context_settings_id = q.context_settings_id
LEFT JOIN sys.query_store_query_text t
ON q.query_text_id = t.query_text_id
WHERE p.is_forced_plan = 1
AND p.last_force_failure_reason != 0;
B. Zapytanie w celu wyświetlenia wyników planu zapytania w usłudze Azure Synapse Analytics
Użyj następującego przykładowego zapytania, aby znaleźć 100 najnowszych planów wykonywania w magazynie zapytań w usłudze Azure Synapse Analytics.
SELECT TOP 100
plan_id,
query_id,
plan_group_id,
engine_version,
compatibility_level,
query_plan_hash,
query_plan,
is_online_index_plan,
is_trivial_plan,
is_parallel_plan,
is_forced_plan,
is_natively_compiled,
force_failure_count,
last_force_failure_reason,
last_force_failure_reason_desc,
count_compiles,
initial_compile_start_time,
last_compile_start_time,
last_execution_time,
avg_compile_duration,
last_compile_duration,
plan_forcing_type,
plan_forcing_type_desc
FROM sys.query_store_plan
ORDER BY last_execution_time DESC;
Treści powiązane
- Monitorowanie wydajności za pomocą magazynu zapytań
- sys.database_query_store_options (Transact-SQL)
- sys.query_context_settings (Transact-SQL)
- sys.query_store_query (Transact-SQL)
- sys.query_store_query_text (Transact-SQL)
- sys.query_store_runtime_stats (Transact-SQL)
- sys.query_store_wait_stats (Transact-SQL)
- sys.query_store_runtime_stats_interval (Transact-SQL)
- Widoki wykazu systemu (Transact-SQL)
- Procedury składowane magazynu zapytań (Transact-SQL)