Temos um SQL Server 2016 SP1 com memória máxima definida como 24 GB.
Este servidor possui um grande número de compilações, apenas 10% dessas compilações são de consultas Ad-Hoc. Portanto, os planos recém-compilados devem ser armazenados no cache do plano, mas o tamanho do cache do plano não está aumentando (aproximadamente 3,72 GB).
Suspeito que haja pressão de memória local que leve à remoção de planos do cache. O limite de pressão do cache planejado é de 5 GB. (75% da memória alvo visível de 0-4GB + 10% da memória alvo visível de 4GB-64GB + 5% da memória alvo visível> 64GB). Quando um armazenamento em cache atinge 75% do limite de pressão, os planos devem ser removidos do cache. No meu caso, 75% dos 5 GB são 3,75 GB. Portanto, é plausível que essa seja a causa das altas compilações.
Existe uma maneira de medir (perfmon, eventos estendidos, ...) a remoção de planos fora do cache? Então, posso ter certeza de que a pressão da memória local é realmente a causa das altas compilações?
fonte