Quais planos de execução estão na memória?


Em sua maioria, a memória utilizada pelo SQL Server é utilizada para armazenar dados (buffer) e planos de execução (cache de procedure). Nesse post vou mostrar quanta memória está alocada para cache de procedures

O SQL Server armazena o cache usando 8kb por página de dados. Usando a dynamic view sys.dm_os_memory_cache_counters podemos ver um resumo do que está alocado:

SELECT TOP 6
LEFT([name], 20) as [NOME],
LEFT(]TYPE], 20) as [TIPO],
[single_pages_kb] + [multi_pages_kb] as [cache_kb],
[entries_count]
FROM sys.dm_os_memory_cache_counters
order by single_pages_kb + multi_pages_kb DESC

Vou focar nos 3 principais resultados dessa query:

  • CACHESTORE_OBJCP – Esse são planos compilados para stored procedures, triggers e functions
  • CACHESTORE_SQLCP – São os planos que não fazem parte de procedures, functions e triggers, inclui basicamente SQL dinâmico.
  • CACHESTORE_PHDR – Esse é responsável por verificar a sintaxe de views, constrains, também resolve o nome de tabelas e colunas

Você pode monitorar o numero de páginas no cache usando o Performance Monitor usando SQLServer:Plan Cache que armazena os contadores de Páginas de Cache. SQL Plans (CACHESTORE_SQLCP), Object Plans (CACHESTORE_OBJCP) e Bound Trees (CACHESTORE_PHDR).

Nos podemos ver individualmente as entradas no cache usando a dynamic view sys.dm_exec_cached_plans

SELECT usercounts, cacheobjtype, objtype, plan_handle
FROM sys.dm_exec_cached_plans

A query lista os planos de execução mais utilizados. Ela inclui os planos para stored procedures, adhoc ou SQL dinâmico, triggers, views. Se você quiser ver o SQL associado ao plano (que no final das contas é o que realmente queremos) será necessário usar o sys.dm_exec_sql_text:

SELECT TOP 100
objtype,
p.size_in_bytes
LEFT([sql].[text], 150) as [SQL]
from sys.dm_exec_cached_plans p
outer apply sys.dm_exec_sql_text (p.plan_handle) sql
order by usercount desc
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s