sys.dm_exec_query_plan_stats (Transact-SQL)sys.dm_exec_query_plan_stats (Transact-SQL)

Область применения: даSQL Server дабаза данных SQL Azure нетAzure синапсе Analytics (SQL DW) нетПараллельное хранилище данныхAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Возвращает эквивалент последнего известного фактический план выполнения для ранее кэшированного плана запроса.Returns the equivalent of the last known actual execution plan for a previously cached query plan.

СинтаксисSyntax

sys.dm_exec_query_plan_stats(plan_handle)  

АргументыArguments

plan_handleplan_handle
— Это маркер, который уникально идентифицирует план выполнения запроса для запущенного пакета, и ее план находится в кэше планов, или в данный момент.Is a token that uniquely identifies a query execution plan for a batch that has executed and its plan resides in the plan cache, or is currently executing. plan_handlevarbinary(64) .plan_handle is varbinary(64).

Plan_handle можно получить из следующих объектов DMO:The plan_handle can be obtained from the following dynamic management objects:

Возвращаемая таблицаTable Returned

Имя столбцаColumn Name Тип данныхData Type ОписаниеDescription
dbiddbid smallintsmallint Идентификатор базы данных, в контексте которой выполнялась компиляция инструкции Transact-SQLTransact-SQL, соответствующей данному плану.ID of the context database that was in effect when the Transact-SQLTransact-SQL statement corresponding to this plan was compiled. Для нерегламентированных и подготовленных инструкций SQL это идентификатор базы данных, в которой происходила компиляция инструкции.For ad hoc and prepared SQL statements, the ID of the database where the statements were compiled.

Столбец может содержать значение NULL.Column is nullable.
objectidobjectid intint Идентификатор объекта (например хранимой процедуры или определяемой пользователем функции) для этого плана запроса.ID of the object (for example, stored procedure or user-defined function) for this query plan. Для нерегламентированных и подготовленных пакетов этот столбец содержит null.For ad hoc and prepared batches, this column is null.

Столбец может содержать значение NULL.Column is nullable.
numbernumber smallintsmallint Целое число нумерованных хранимых процедур.Numbered stored procedure integer. Например, группа процедур для заказы приложения может называться orderproc; 1, orderproc; 2, и т. д.For example, a group of procedures for the orders application may be named orderproc;1, orderproc;2, and so on. Для нерегламентированных и подготовленных пакетов этот столбец содержит null.For ad hoc and prepared batches, this column is null.

Столбец может содержать значение NULL.Column is nullable.
Шифрованиеencrypted bitbit Указывает, зашифрована ли соответствующая хранимая процедура.Indicates whether the corresponding stored procedure is encrypted.

0 = не зашифрована0 = not encrypted

1 = зашифрована1 = encrypted

Столбец не может содержать значение NULL.Column is not nullable.
query_planquery_plan xmlxml Содержит последние известные среды выполнения представление Showplan фактический план выполнения запроса, указанный с помощью plan_handle.Contains the last known runtime Showplan representation of the actual query execution plan that is specified with plan_handle. Представление Showplan имеет формат XML.The Showplan is in XML format. Для каждого пакета, содержащего, например нерегламентированные инструкции языка Transact-SQLTransact-SQL, вызовы хранимых процедур и вызовы определяемых пользователем функций, формируется один план.One plan is generated for each batch that contains, for example ad hoc Transact-SQLTransact-SQL statements, stored procedure calls, and user-defined function calls.

Столбец может содержать значение NULL.Column is nullable.

ПримечанияRemarks

Этой системной функции доступен, начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.4.This system function is available starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.4.

Эта функция активируется явным образом и требует включения флага трассировки 2451.This is an opt-in feature and requires trace flag 2451 to be enabled. Начиная с версии SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.5 эта задача выполняется на уровне базы данных в соответствии с инструкциями, которые можно найти в описании параметра LAST_QUERY_PLAN_STATS в статье ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.5, to accomplish this at the database level, see the LAST_QUERY_PLAN_STATS option in ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).

Эта функция системы, работает под упрощенных инфраструктуру профилирования статистики выполнения запросов.This system function works under the lightweight query execution statistics profiling infrastructure. Дополнительные сведения см. в разделе Инфраструктура профилирования запросов.For more information, see Query Profiling Infrastructure.

При следующих условиях вывод инструкции Showplan эквивалентно фактический план выполнения возвращается в query_plan столбец возвращаемой таблицы для sys.dm_exec_query_plan_ Статистика:Under the following conditions, a Showplan output equivalent to an actual execution plan is returned in the query_plan column of the returned table for sys.dm_exec_query_plan_stats:

  • План можно найти в sys.dm_exec_cached_plans.The plan can be found in sys.dm_exec_cached_plans.
    ANDAND
  • Выполняемый запрос является сложных или потребления ресурсов.The query being executed is complex or resource consuming.

При следующих условиях упрощенный 1 выходных данных Showplan возвращается в query_plan столбец возвращаемой таблицы для sys.dm_exec_ query_plan_stats:Under the following conditions, a simplified 1 Showplan output is returned in the query_plan column of the returned table for sys.dm_exec_query_plan_stats:

  • План можно найти в sys.dm_exec_cached_plans.The plan can be found in sys.dm_exec_cached_plans.
    ANDAND
  • Запрос является довольно простой, обычно относится к категории как часть рабочей нагрузки OLTP.The query is simple enough, usually categorized as part of an OLTP workload.

1 начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP-версии 2.5, это относится к инструкции Showplan, который содержит только узел оператор задания корневого каталога (SELECT).1 Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.5, this refers to a Showplan that only contains the root node operator (SELECT). Для SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.4, это относится к кэшированного плана по мере доступности через sys.dm_exec_cached_plans.For SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.4 this refers to the cached plan as available through sys.dm_exec_cached_plans.

При следующих условиях вывод не возвращается из sys.dm_exec_query_plan_stats:Under the following conditions, no output is returned from sys.dm_exec_query_plan_stats:

Примечание

Из-за ограничения количества уровней вложенности, допустимых в xml тип данных, sys.dm_exec_query_plan не может возвратить планы запросов, которые соответствуют или превосходят 128 уровней вложенных элементов.Due to a limitation in the number of nested levels allowed in the xml data type, sys.dm_exec_query_plan cannot return query plans that meet or exceed 128 levels of nested elements. В более ранних версиях SQL ServerSQL Server, это условие предназначалось для предотвращения возврата плана запроса и формирования ошибки 6335.In earlier versions of SQL ServerSQL Server, this condition prevented the query plan from returning and generates error 6335. В SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 2 и более поздних версиях query_plan столбец возвращает значение NULL.In SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 2 and later versions, the query_plan column returns NULL.

РазрешенияPermissions

Необходимо разрешение VIEW SERVER STATE на сервере.Requires VIEW SERVER STATE permission on the server.

ПримерыExamples

A.A. Ищете наконец известных фактический план выполнения запроса определенного кэшированного планаLooking at last known actual query execution plan for a specific cached plan

В следующем примере запрос sys.dm_exec_cached_plans для поиска необходимого плана и копирования его plan_handle из выходных данных.The following example queries sys.dm_exec_cached_plans to find the interesting plan and copy its plan_handle from the output.

SELECT * FROM sys.dm_exec_cached_plans;  
GO  

Затем, чтобы получить последние известные фактический план выполнения запроса, используйте скопированный plan_handle с помощью системной функции sys.dm_exec_query_plan_stats.Then, to obtain the last known actual query execution plan, use the copied plan_handle with system function sys.dm_exec_query_plan_stats.

SELECT * FROM sys.dm_exec_query_plan_stats(< copied plan_handle >);  
GO  

Б.B. Ищете наконец известных фактический план выполнения запроса всех кэшированных плановLooking at last known actual query execution plan for all cached plans

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. Ищете наконец известных фактический план выполнения запроса определенного кэшированного плана и текста запросаLooking at last known actual query execution plan for a specific cached plan and query text

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. Рассмотрим кэшированных событий для триггераLook at cached events for trigger

SELECT *
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle)
WHERE objtype ='Trigger';
GO

См. такжеSee Also

Флаги трассировкиTrace Flags
Динамические административные представления и функции (Transact-SQL) Dynamic Management Views and Functions (Transact-SQL)
Динамические административные представления, связанные с выполнением (Transact-SQL)Execution Related Dynamic Management Views (Transact-SQL)