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 2019 (15.x) i nowsze wersje bazy danych
SQL Sql Database azure SQL
Database
w usłudze Microsoft Fabric
Zwraca odpowiednik ostatniego znanego rzeczywistego planu wykonywania dla wcześniej buforowanego planu zapytania.
Składnia
sys.dm_exec_query_plan_stats ( plan_handle )
Arguments
plan_handle
Token, który jednoznacznie identyfikuje plan wykonywania zapytania dla partii, która została wykonana, a jego plan znajduje się w pamięci podręcznej planu lub jest obecnie wykonywany. plan_handle jest varbinary(64).
Plan_handle można uzyskać z następujących dynamicznych obiektów zarządzania:
- sys.dm_exec_cached_plans
- sys.dm_exec_query_stats
- sys.dm_exec_requests
- sys.dm_exec_procedure_stats
- sys.dm_exec_trigger_stats
Zwrócona tabela
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
dbid |
smallint | Identyfikator bazy danych kontekstu, która obowiązywała, gdy skompilowano instrukcję Transact-SQL odpowiadającą temu planowi. W przypadku instrukcji ad hoc i przygotowanych sql identyfikator bazy danych, w której skompilowano instrukcje. Kolumna jest dopuszczana do wartości null. |
objectid |
int | Identyfikator obiektu (na przykład procedura składowana lub funkcja zdefiniowana przez użytkownika) dla tego planu zapytania. W przypadku partii ad hoc i przygotowanych kolumna ma wartość null. Kolumna jest dopuszczana do wartości null. |
number |
smallint | Liczba całkowita ponumerowanej procedury składowanej. Na przykład grupa procedur dla orders aplikacji może mieć nazwę orderproc;1, orderproc;2itd. W przypadku partii ad hoc i przygotowanych kolumna ma wartość null.Kolumna jest dopuszczana do wartości null. |
encrypted |
bit | Wskazuje, czy odpowiednia procedura składowana jest szyfrowana. 0 = niezaszyfrowane 1 = zaszyfrowane Kolumna nie może zawierać wartości null. |
query_plan |
xml | Zawiera ostatni znany środowisko uruchomieniowe Showplan reprezentację rzeczywistego planu wykonywania zapytania określonego przy użyciu plan_handle. Program Showplan ma format XML. Jeden plan jest generowany dla każdej partii zawierającej na przykład instrukcje ad hoc Transact-SQL, wywołania procedury składowanej i wywołania funkcji zdefiniowane przez użytkownika. Kolumna jest dopuszczana do wartości null. |
Uwagi
Jest to funkcja zgody. Aby włączyć na poziomie serwera, użyj flagi śledzenia 2451. Aby włączyć na poziomie bazy danych, użyj LAST_QUERY_PLAN_STATS opcji ALTER DATABASE SCOPED CONFIGURATION.
Ta funkcja systemowa działa w ramach uproszczonej infrastruktury profilowania statystyk wykonywania zapytań. Aby uzyskać więcej informacji, zobacz Infrastruktura profilowania zapytań.
Dane wyjściowe programu Showplan według sys.dm_exec_query_plan_stats zawierają następujące informacje:
Wszystkie informacje dotyczące czasu kompilacji znalezione w planie buforowanym
Informacje o środowisku uruchomieniowym, takie jak rzeczywista liczba wierszy na operator, łączny czas procesora CPU i czas wykonywania zapytania, ostrzeżenia dotyczące rozlania, rzeczywista wersja DOP, maksymalna użyta pamięć i udzielona pamięć
W następujących warunkach dane wyjściowe programu Showplan równoważne rzeczywistemu planowi wykonania są zwracane w query_plan kolumnie zwracanej tabeli dla sys.dm_exec_query_plan_statselementu :
Plan można znaleźć w sys.dm_exec_cached_plans.
oraz
Wykonywane zapytanie jest złożone lub zużywające zasoby.
W poniższych warunkach uproszczone1 dane wyjściowe programu Showplan są zwracane w query_plan kolumnie zwracanej tabeli dla sys.dm_exec_query_plan_statselementu :
Plan można znaleźć w sys.dm_exec_cached_plans.
oraz
Zapytanie jest wystarczająco proste, zwykle podzielone na kategorie w ramach obciążenia OLTP.
1 Odnosi się do programu Showplan, który zawiera tylko operator węzła głównego (SELECT).
W następujących warunkach żadne dane wyjściowe nie są zwracane z sys.dm_exec_query_plan_statselementu :
Plan zapytania określony przy użyciu
plan_handlezostał wykluczony z pamięci podręcznej planu.lub
Plan zapytania nie był możliwy do buforowania w pierwszej kolejności. Aby uzyskać więcej informacji, zobacz Buforowanie i ponowne używanie planu wykonywania.
Uwaga / Notatka
Ograniczenie liczby poziomów zagnieżdżonych dozwolonych w typie danych XML oznacza, że sys.dm_exec_query_plan nie można zwrócić planów zapytań spełniających lub przekraczających 128 poziomów zagnieżdżonych elementów. We wcześniejszych wersjach programu SQL Server ten warunek uniemożliwił zwracanie planu zapytania i generowanie błędu 6335. W programie SQL Server 2005 (9.x) z dodatkiem Service Pack 2 lub nowszym kolumna query_plan zwraca wartość NULL.
Permissions
Program SQL Server 2019 (15.x) i starsze wersje wymagają VIEW SERVER STATE uprawnień na serwerze.
Program SQL Server 2022 (16.x) i nowsze wersje wymagają VIEW SERVER PERFORMANCE STATE uprawnień na serwerze.
Przykłady
A. Zapoznaj się z ostatnim znanym rzeczywistym planem wykonywania zapytań dla określonego buforowanego planu
Poniższe przykładowe zapytania sys.dm_exec_cached_plans umożliwiają znalezienie interesującego planu i skopiowanie go plan_handle z danych wyjściowych.
SELECT * FROM sys.dm_exec_cached_plans;
GO
Następnie, aby uzyskać ostatni znany rzeczywisty plan wykonywania zapytania, użyj skopiowanego plan_handle z funkcją sys.dm_exec_query_plan_statssystemową .
SELECT * FROM sys.dm_exec_query_plan_stats(< copied plan_handle >);
GO
B. Zapoznaj się z ostatnim znanym rzeczywistym planem wykonywania zapytań dla wszystkich buforowanych planów
SELECT * FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle) AS qps;
GO
C. Zapoznaj się z ostatnim znanym rzeczywistym planem wykonywania zapytań dla określonego buforowanego planu i tekstu zapytania
SELECT * FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle) AS qps
WHERE st.text LIKE 'SELECT * FROM Person.Person%';
GO
D. Przyjrzyj się buforowanym zdarzeń wyzwalacza
SELECT * FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle)
WHERE objtype = 'Trigger';
GO
Treści powiązane
- Ustawianie flag śledzenia za pomocą funkcji DBCC TRACEON (Transact-SQL)
- dynamiczne widoki zarządzania systemu
- Dynamiczne widoki zarządzania i funkcje związane z wykonywaniem (Transact-SQL)