Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Base de dados SQL no Microsoft Fabric
Retorna uma linha para cada plano de consulta que é armazenada em cache pelo SQL Server para uma execução de consulta mais rápida. Pode usar esta vista de gestão dinâmica para encontrar planos de consulta em cache, texto de consulta em cache, a quantidade de memória ocupada pelos planos em cache e a contagem de reutilização dos planos em cache.
No Azure SQL Database, as vistas de gestão dinâmica não podem expor informações que possam afetar a contenção da base de dados ou informações sobre outras bases de dados a que o utilizador tem acesso. Para evitar expor esta informação, todas as linhas que contenham dados que não pertencem ao inquilino ligado são filtradas. Além disso, os valores nas colunas memory_object_address e pool_id são filtrados; o valor da coluna é definido para NULL.
Observação
Para chamar isso do Azure Synapse Analytics ou do Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_exec_cached_plans. Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.
| Nome da coluna | Tipo de dados | Description |
|---|---|---|
bucketid |
int | ID do balde de hash onde a entrada está armazenada em cache. O valor indica um intervalo de 0 até ao tamanho da tabela de hash para o tipo de cache. Para as caches SQL Plans e Object Plans, o tamanho da tabela hash pode chegar até 10.007 em sistemas de 32 bits e até 40.009 em sistemas de 64 bits. Para a cache Bound Trees, o tamanho da tabela de hash pode ser até 1.009 em sistemas de 32 bits e até 4.001 em sistemas de 64 bits. Para a cache de Procedimentos Armazenados Estendidos, o tamanho da tabela de hash pode ser até 127 em sistemas de 32 e 64 bits. |
refcounts |
int | Número de objetos de cache que estão a referenciar este objeto de cache.
refcounts Deve haver pelo menos 1 para que uma entrada esteja no cache. |
usecounts |
int | O número de vezes que o objeto de cache foi consultado. Não é incrementado quando consultas parametrizadas encontram um plano na cache. Pode ser incrementado várias vezes ao usar o Showplan. |
size_in_bytes |
int | Número de bytes consumidos pelo objeto de cache. |
memory_object_address |
varbinário(8) | Endereço de memória da entrada em cache. Este valor pode ser usado com sys.dm_os_memory_objects para obter a quebra de memória do plano em cache e com sys.dm_os_memory_cache_entries_entries para obter o custo de armazenamento em cache da entrada. |
cacheobjtype |
Nvarchar(34) | Tipo de objeto na cache. O valor pode ser um dos seguintes: Plano Compilado Esboço de Plano Compilado Árvore de Análise Sintática Proc Estendido Func compilado CLR Proc compilado CLR |
objtype |
Nvarchar(16) | Tipo de objeto. Abaixo estão os valores possíveis e as respetivas descrições. Proc: Procedimento armazenado Preparado: Declaração preparada Ad hoc: Consulta ad hoc. Refere-se a Transact-SQL submetidos como eventos de linguagem usando osql ou sqlcmd em vez de chamadas remotas a procedimentos. ReplProc: Procedimento de filtro-replicação Gatilho: Gatilho Visualizar: Ver Padrão: Padrão UsrTab: Tabela de utilizadores SysTab: Tabela do sistema Verificar: Restrição CHECK Regra: Regra |
plan_handle |
varbinary(64) | Identificador do plano na memória. Esse identificador é transitório e permanece constante apenas enquanto o plano permanece no cache. Este valor pode ser usado com as seguintes funções de gestão dinâmica: sys.dm_exec_sql_text sys.dm_exec_query_plan sys.dm_exec_plan_attributes |
pool_id |
int | O ID do pool de recursos contra o qual a utilização de memória deste plano é contabilizada. |
pdw_node_id |
int | O identificador do nó em que esta distribuição se encontra. Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW) |
Permissions
O SQL Server 2019 (15.x) e versões anteriores exigem VIEW SERVER STATE permissão.
O SQL Server 2022 (16.x) e versões posteriores, bem como o Azure SQL Managed Instance, requerem VIEW SERVER PERFORMANCE STATE permissão.
Nos objetivos de serviço do Banco de Dados SQL do Azure Basic, S0 e S1 , e para bancos de dados em pools elásticos, é necessária a conta de administrador do servidor , a conta de administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader##função de servidor . Em todos os outros objetivos de serviço do Banco de dados SQL, é necessária a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader##.
Examples
A. Devolva o texto em lote de entradas em cache que são reutilizadas
O exemplo seguinte devolve o texto SQL de todas as entradas em cache que foram usadas mais do que uma vez.
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;
B. Devolver planos de consulta para todos os gatilhos em cache
O exemplo seguinte devolve os planos de consulta de todos os gatilhos em cache.
SELECT plan_handle,
query_plan,
objtype
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan(plan_handle)
WHERE objtype = 'Trigger';
C. Devolva as opções SET com que o plano foi compilado
O exemplo seguinte devolve as SET opções com que o plano foi compilado. O sql_handle plano também é devolvido. O PIVOT operador é usado para gerar os set_options atributos e sql_handle como colunas em vez de como linhas. Para mais informações sobre o valor devolvido em set_options, veja sys.dm_exec_plan_attributes.
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;
D. Devolva a divisão de memória de todos os planos compilados em cache
O exemplo seguinte devolve uma decomposição da memória usada por todos os planos compilados na 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
INNER 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';
Conteúdo relacionado
- Visualizações de gerenciamento dinâmico do sistema
- Visualizações e funções de gerenciamento dinâmico relacionadas à execução (Transact-SQL)
- sys.dm_exec_query_plan (Transact-SQL)
- sys.dm_exec_plan_attributes (Transact-SQL)
- sys.dm_exec_sql_text (Transact-SQL)
- sys.dm_os_memory_objects (Transact-SQL)
- sys.dm_os_memory_cache_entries (Transact-SQL)
- Cláusula FROM mais JOIN, APPLY, PIVOT (Transact-SQL)