sys.dm_exec_cached_plans (Transact-SQL)sys.dm_exec_cached_plans (Transact-SQL)

APLICA-SE A: simSQL Server (a partir do 2008) simBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Retorna uma linha para cada plano de consulta armazenado em cache pelo SQL ServerSQL Server a fim de acelerar a execução da consulta.Returns a row for each query plan that is cached by SQL ServerSQL Server for faster query execution. É possível usar esta exibição de gerenciamento dinâmico para localizar planos de consulta em cache, texto de consulta em cache, a quantidade de memória usada pelos planos em cache e o número de reutilizações dos planos em cache.You can use this dynamic management view to find cached query plans, cached query text, the amount of memory taken by cached plans, and the reuse count of the cached plans.

No Banco de dados SQL do AzureAzure SQL Database, as exibições de gerenciamento dinâmico não podem expor informações que afetarão a contenção do banco de dados ou informações sobre outros bancos de dados aos quais o usuário tem acesso.In Banco de dados SQL do AzureAzure SQL Database, dynamic management views cannot expose information that would impact database containment or expose information about other databases the user has access to. Para evitar a exposição dessas informações, cada linha que contém dados que não pertencem ao locatário conectado será filtrada. Além disso, os valores nas colunas memory_object_address e pool_id são filtrados; o valor da coluna é definido como NULL.To avoid exposing this information, every row that contains data that doesn't belong to the connected tenant is filtered out. In addition, the values in the columns memory_object_address and pool_id are filtered; the column value is set to NULL.

Observação

Chamá-lo partir Azure SQL Data WarehouseAzure SQL Data Warehouse ou Parallel Data WarehouseParallel Data Warehouse, use o nome sys.dm_pdw_nodes_exec_cached_plans.To call this from Azure SQL Data WarehouseAzure SQL Data Warehouse or Parallel Data WarehouseParallel Data Warehouse, use the name sys.dm_pdw_nodes_exec_cached_plans.

Nome da colunaColumn name Tipo de dadosData type DescriçãoDescription
bucketidbucketid intint ID do segmento de hash em que a entrada é armazenada em cache.ID of the hash bucket in which the entry is cached. O valor indica um intervalo de 0 ao tamanho de tabela de hash para o tipo de cache.The value indicates a range from 0 through the hash table size for the type of cache.

Para os caches de planos SQL e planos de objeto, o tamanho da tabela de hash pode ser de até 10007 em sistemas de 32 bits e até 40009 em sistemas de 64 bits.For the SQL Plans and Object Plans caches, the hash table size can be up to 10007 on 32-bit systems and up to 40009 on 64-bit systems. Para os caches de árvores associadas, o tamanho da tabela de hash pode ser de até 1009 em sistemas de 32 bits e até 4001 em sistemas de 64 bits.For the Bound Trees cache, the hash table size can be up to 1009 on 32-bit systems and up to 4001 on 64-bit systems. Para os caches de procedimentos armazenados estendidos, o tamanho da tabela de hash pode ser de até 127 em sistemas de 32 e 64 bits.For the Extended Stored Procedures cache the hash table size can be up to 127 on 32-bit and 64-bit systems.
refcountsrefcounts intint Número de objetos de cache que fazem referência a este objeto de cache.Number of cache objects that are referencing this cache object. Refcounts deve ser pelo menos 1 para uma entrada fique no cache.Refcounts must be at least 1 for an entry to be in the cache.
usecountsusecounts intint Número de vezes que o objeto de cache foi examinado.Number of times the cache object has been looked up. Não incrementado quando consultas parametrizadas localizam um plano no cache.Not incremented when parameterized queries find a plan in the cache. Pode ser incrementado várias vezes durante o us do plano de execução.Can be incremented multiple times when using showplan.
size_in_bytessize_in_bytes intint Número de bytes consumidos pelo objeto de cache.Number of bytes consumed by the cache object.
memory_object_addressmemory_object_address varbinary(8)varbinary(8) Endereço de memória da entrada em cache.Memory address of the cached entry. Esse valor pode ser usado com DM os_memory_objects para obter a análise de memória do plano de cache e com DM os_memory_cache_entriesentradas para obter o custo de armazenamento em cache a entrada.This value can be used with sys.dm_os_memory_objects to get the memory breakdown of the cached plan and with sys.dm_os_memory_cache_entries_entries to obtain the cost of caching the entry.
cacheobjtypecacheobjtype nvarchar(34)nvarchar(34) Tipo de objeto no cache.Type of object in the cache. O valor pode ser um dos seguintes:The value can be one of the following:

Compiled PlanCompiled Plan

Compiled Plan StubCompiled Plan Stub

Parse TreeParse Tree

Extended ProcExtended Proc

CLR Compiled FuncCLR Compiled Func

CLR Compiled ProcCLR Compiled Proc
objtypeobjtype nvarchar(16)nvarchar(16) Tipo de objeto.Type of object. Abaixo estão os valores possíveis e suas descrições correspondentes.Below are the possible values and their corresponding descriptions.

Proc: Procedimento armazenadoProc: Stored procedure
Preparado: Instrução preparadaPrepared: Prepared statement
Ad hoc: Consulta ad hoc.Adhoc: Ad hoc query. Refere-se ao Transact-SQLTransact-SQL enviado como eventos de idioma usando osql ou sqlcmd em vez de como chamadas de procedimento remoto.Refers to Transact-SQLTransact-SQL submitted as language events by using osql or sqlcmd instead of as remote procedure calls.
ReplProc: Procedimento de filtro de replicaçãoReplProc: Replication-filter-procedure
Gatilho: GatilhoTrigger: Trigger
Modo de exibição: ExibiçãoView: View
Padrão: PadrãoDefault: Default
UsrTab: Tabela de usuárioUsrTab: User table
SysTab: Tabela do sistemaSysTab: System table
Verifique se: Restrição CHECKCheck: CHECK constraint
Regra: RegraRule: Rule
plan_handleplan_handle varbinary(64)varbinary(64) Identificador do plano na memória.Identifier for the in-memory plan. Esse identificador é transitório e permanece constante somente enquanto o plano permanece no cache.This identifier is transient and remains constant only while the plan remains in the cache. Este valor pode ser usado com as seguintes funções de gerenciamento dinâmico:This value may be used with the following dynamic management functions:

sys.dm_exec_sql_textsys.dm_exec_sql_text

sys.dm_exec_query_plansys.dm_exec_query_plan

sys.dm_exec_plan_attributessys.dm_exec_plan_attributes
pool_idpool_id intint ID do pool de recursos no qual o uso de memória do plano é contabilizado.The ID of the resource pool against which this plan memory usage is accounted for.
pdw_node_idpdw_node_id intint Aplica-se ao: Azure SQL Data WarehouseAzure SQL Data Warehouse, Parallel Data WarehouseParallel Data WarehouseApplies to: Azure SQL Data WarehouseAzure SQL Data Warehouse, Parallel Data WarehouseParallel Data Warehouse

O identificador para o nó que essa distribuição é no.The identifier for the node that this distribution is on.

11

PermissõesPermissions

Na SQL ServerSQL Server, requer VIEW SERVER STATE permissão.On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
Na Banco de Dados SQLSQL Database, requer o VIEW DATABASE STATE permissão no banco de dados.On Banco de Dados SQLSQL Database, requires the VIEW DATABASE STATE permission in the database.

ExemplosExamples

A.A. Retornando o texto de lote de entradas em cache que são reutilizadasReturning the batch text of cached entries that are reused

O exemplo seguinte retorna o texto SQL de todas as entradas em cache que foram usadas mais de uma vez.The following example returns the SQL text of all cached entries that have been used more than once.

SELECT usecounts, cacheobjtype, objtype, text   
FROM sys.dm_exec_cached_plans   
CROSS APPLY sys.dm_exec_sql_text(plan_handle)   
WHERE usecounts > 1   
ORDER BY usecounts DESC;  
GO  

B.B. Retornando planos de consulta para todos os gatilhos em cacheReturning query plans for all cached triggers

O exemplo seguinte retorna os planos de consulta de todos os gatilhos em cache.The following example returns the query plans of all cached triggers.

SELECT plan_handle, query_plan, objtype   
FROM sys.dm_exec_cached_plans   
CROSS APPLY sys.dm_exec_query_plan(plan_handle)   
WHERE objtype ='Trigger';  
GO  

C.C. Retornando as opções SET com que o plano foi compiladoReturning the SET options with which the plan was compiled

O exemplo seguinte retorna as opções SET com que o plano foi compilado.The following example returns the SET options with which the plan was compiled. O sql_handle para o plano também é retornado.The sql_handle for the plan is also returned. O operador PIVOT é usado para saída de set_options e sql_handle atributos como colunas em vez de linhas.The PIVOT operator is used to output the set_options and sql_handle attributes as columns rather than as rows. Para obter mais informações sobre o valor retornado em set_options, consulte exec_plan_attributes (Transact-SQL).For more information about the value returned in set_options, see sys.dm_exec_plan_attributes (Transact-SQL).

SELECT plan_handle, pvt.set_options, pvt.sql_handle  
FROM (  
      SELECT plan_handle, epa.attribute, epa.value   
      FROM sys.dm_exec_cached_plans   
      OUTER APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa  
      WHERE cacheobjtype = 'Compiled Plan'  
      ) AS ecpa   
PIVOT (MAX(ecpa.value) FOR ecpa.attribute IN ("set_options", "sql_handle")) AS pvt;  
GO  

D.D. Retornando a análise de memória de todos os planos compilados em cacheReturning the memory breakdown of all cached compiled plans

O exemplo seguinte retorna uma análise da memória usada por todos os planos compilados no cache.The following example returns a breakdown of the memory used by all compiled plans in the cache.

SELECT plan_handle, ecp.memory_object_address AS CompiledPlan_MemoryObject,   
    omo.memory_object_address, type, page_size_in_bytes   
FROM sys.dm_exec_cached_plans AS ecp   
JOIN sys.dm_os_memory_objects AS omo   
    ON ecp.memory_object_address = omo.memory_object_address   
    OR ecp.memory_object_address = omo.parent_address  
WHERE cacheobjtype = 'Compiled Plan';  
GO  

Consulte tambémSee Also

Exibições e funções de gerenciamento dinâmico (Transact-SQL) Dynamic Management Views and Functions (Transact-SQL)
Funções e exibições de gerenciamento dinâmico relacionadas à execução (Transact-SQL) Execution Related Dynamic Management Views and Functions (Transact-SQL)
sys.dm_exec_query_plan (Transact-SQL) sys.dm_exec_query_plan (Transact-SQL)
sys.dm_exec_plan_attributes (Transact-SQL) sys.dm_exec_plan_attributes (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL) sys.dm_exec_sql_text (Transact-SQL)
sys.dm_os_memory_objects (Transact-SQL) sys.dm_os_memory_objects (Transact-SQL)
sys.dm_os_memory_cache_entries (Transact-SQL) sys.dm_os_memory_cache_entries (Transact-SQL)
FROM (Transact-SQL)FROM (Transact-SQL)