Aprendi algumas boas maneiras de diagnosticar falta de RAM em um SQL Server e estou pensando se devo adicionar o cache do plano a esta caixa de ferramentas.
Um sinal de falta de RAM é que o cache do plano não dura muito. Você pode encontrar facilmente os planos em cache mais antigos sys.dm_exec_query_stats
e a quantidade de RAM que o cache do plano está usando SELECT * FROM sys.dm_os_memory_clerks WHERE TYPE = 'CACHESTORE_SQLCP'
. Qualquer um deles pode ser transformado em informações acionáveis sobre o seu sistema sem RAM?
Minha suspeita é que nenhuma das visualizações fornece métricas úteis. Se 2% ou 20% da memória do meu servidor for ocupada pelo cache do plano, e daí? Da mesma forma, se meu plano em cache mais antigo tiver um mês, e daí? Pelo que sei, pode ser apenas um plano usado com muita frequência.
A resposta não , na medida em que os planos podem ser invalidados por
Update Statistics
endIndex Rebuild
, por exemplo, no meu servidor Index Rebuild/Update Statistics de Ola Hallengren (o código é inteligente o suficiente para reconstruir apenas os índices que realmente precisam dele) invalida os planos todas as noites para que em de manhã tenho poucos planos e à tarde o cache do plano é grande, mas não dá ideia da minha RAM.Desta forma, você pode medir seus planos para cada banco de dados, tentar comparar os resultados antes e depois da reconstrução/atualização das estatísticas no servidor OLTP ocupado
E aqui você pode ver as causas da recompilação do plano