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

Aplica-se a: simSQL Server Simbanco de dados SQL do Azure nãoanálise de Synapse do Azure (SQL DW) nãoparalelo data warehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Retorna o equivalente do último plano de execução real conhecido para um plano de consulta armazenados em cache anteriormente.Returns the equivalent of the last known actual execution plan for a previously cached query plan.

SintaxeSyntax

sys.dm_exec_query_plan_stats(plan_handle)  

ArgumentosArguments

plan_handleplan_handle
É um token que identifica exclusivamente um plano de execução de consulta para um lote que foi executado e seu plano reside no cache de plano ou em execução no momento.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_handle is varbinary(64) .plan_handle is varbinary(64).

O plan_handle pode ser obtido dos seguintes objetos de gerenciamento dinâmico:The plan_handle can be obtained from the following dynamic management objects:

Tabela retornadaTable Returned

Nome da colunaColumn Name Tipo de DadosData Type DescriçãoDescription
dbiddbid smallintsmallint A ID do banco de dados de contexto em vigor quando a instrução Transact-SQLTransact-SQL correspondente a esse plano foi compilada.ID of the context database that was in effect when the Transact-SQLTransact-SQL statement corresponding to this plan was compiled. Para instruções SQL preparadas e ad hoc, a ID do banco de dados no qual as instruções foram compiladas.For ad hoc and prepared SQL statements, the ID of the database where the statements were compiled.

A coluna é anulável.Column is nullable.
objectidobjectid intint A identificação do objeto (por exemplo, procedimento armazenado ou função definida pelo usuário) para este plano de consulta.ID of the object (for example, stored procedure or user-defined function) for this query plan. Para lotes ad hoc e preparadas, essa coluna é nulo.For ad hoc and prepared batches, this column is null.

A coluna é anulável.Column is nullable.
numbernumber smallintsmallint Inteiro de procedimento armazenado numerado.Numbered stored procedure integer. Por exemplo, um grupo de procedimentos para o pedidos aplicativo pode ser nomeado orderproc; 1, orderproc; 2e assim por diante.For example, a group of procedures for the orders application may be named orderproc;1, orderproc;2, and so on. Para lotes ad hoc e preparadas, essa coluna é nulo.For ad hoc and prepared batches, this column is null.

A coluna é anulável.Column is nullable.
encryptedencrypted bitbit Indica se o procedimento armazenado correspondente está criptografado.Indicates whether the corresponding stored procedure is encrypted.

0 = não criptografado0 = not encrypted

1 = criptografado1 = encrypted

A coluna não é anulável.Column is not nullable.
query_planquery_plan xmlxml Contém o último conhecido em tempo de execução representação do plano de execução do plano de execução de consulta real que é especificado com plan_handle.Contains the last known runtime Showplan representation of the actual query execution plan that is specified with plan_handle. O Showplan está em formato XML.The Showplan is in XML format. Um plano é gerado para cada lote que contém, por exemplo, instruções ad hoc Transact-SQLTransact-SQL, chamadas de procedimento armazenado e chamadas de função definidas pelo usuário.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.

A coluna é anulável.Column is nullable.

ComentáriosRemarks

Essa função do sistema está disponível começando com 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.

Esse é um recurso opcional e requer que o sinalizador de rastreamento 2451 esteja habilitado.This is an opt-in feature and requires trace flag 2451 to be enabled. Começando com SQL Server 2019 (15.x)SQL Server 2019 (15.x) 2.5 CTP, para fazer isso no nível do banco de dados, consulte a opção 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).

Essa função do sistema funciona sob o leve infraestrutura de criação de perfil de estatísticas de execução de consulta.This system function works under the lightweight query execution statistics profiling infrastructure. Para obter mais informações, confira Infraestrutura de Criação de Perfil de Consulta.For more information, see Query Profiling Infrastructure.

Sob as condições a seguir, um plano de execução de saída equivalente a um plano de execução real é retornado na query_plan coluna da tabela retornada para sys.dm_exec_query_plan_ estatísticas de: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:

  • O plano pode ser encontrado na DM exec_cached_plans.The plan can be found in sys.dm_exec_cached_plans.
    ANDAND
  • A consulta que está sendo executada é complexo ou consumo de recursos.The query being executed is complex or resource consuming.

Sob as seguintes condições, uma simplificada 1 saída Showplan é retornada no query_plan coluna da tabela retornada para 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:

  • O plano pode ser encontrado na DM exec_cached_plans.The plan can be found in sys.dm_exec_cached_plans.
    ANDAND
  • A consulta é simple o suficiente, geralmente categorizados como parte de uma carga de trabalho OLTP.The query is simple enough, usually categorized as part of an OLTP workload.

1 começando com SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.5, isso se refere a um plano de execução que contém apenas o operador de nó raiz (Selecionar).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). Para SQL Server 2019 (15.x)SQL Server 2019 (15.x) refere-se para o plano armazenado em cache como disponível por meio do 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.

Nas seguintes condições nenhuma saída é retornada partir sys.dm_exec_query_plan_stats:Under the following conditions, no output is returned from sys.dm_exec_query_plan_stats:

  • O plano de consulta é especificado usando plan_handle foi removido do cache do plano.The query plan that is specified by using plan_handle has been evicted from the plan cache.
    OROR
  • O plano de consulta não foi armazenável em cache em primeiro lugar.The query plan was not cacheable in the first place. Para obter mais informações, consulte cache de plano de execução e reutilização .For more information, see Execution Plan Caching and Reuse .

Observação

Devido a uma limitação no número de níveis aninhados permitida na xml tipo de dados . DM exec_query_plan não pode retornar planos de consulta que atendem ou excedem 128 níveis de elementos aninhados.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. Em versões anteriores do SQL ServerSQL Server, esta condição impediu que o plano de consulta retornando e gera erro 6335.In earlier versions of SQL ServerSQL Server, this condition prevented the query plan from returning and generates error 6335. Na SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 2 e versões posteriores, o query_plan coluna retorna NULL.In SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 2 and later versions, the query_plan column returns NULL.

PermissõesPermissions

Requer a permissão VIEW SERVER STATE no servidor.Requires VIEW SERVER STATE permission on the server.

ExemplosExamples

A.A. Procurando pelo último plano de execução de consulta real conhecidos um plano armazenado em cache específicoLooking at last known actual query execution plan for a specific cached plan

A exemplo a seguir consulta DM exec_cached_plans para localizar o plano de interessante e copiar seu plan_handle da saída.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  

Em seguida, para obter o último plano de execução conhecidos consulta propriamente dita, use copiado plan_handle com a função do sistema 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.B. Procurando pelo último plano de execução de consulta real conhecidos todos os planos em cacheLooking 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.C. Procurando pelo último plano de execução de consulta real conhecidos um plano armazenado em cache específico e o texto da consultaLooking 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.D. Examinar eventos armazenados em cache para o gatilhoLook 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

Consulte tambémSee Also

Sinalizadores de rastreamentoTrace Flags
Exibições e funções de gerenciamento dinâmico (Transact-SQL) Dynamic Management Views and Functions (Transact-SQL)
Exibições de gerenciamento dinâmico relacionadas à execução (Transact-SQL)Execution Related Dynamic Management Views (Transact-SQL)