(Esta é uma continuação de Os índices consomem memória? )
Um colega desenvolvedor de banco de dados acredita que estamos tendo problemas de memória. Ele observou tempos de execução maiores em algumas consultas padrão - passando de menos de 10 segundos para cerca de dois minutos e meio. Ele olhou para o Gerenciador de Tarefas no servidor e encontrou alto uso de memória e agora quer pegar parte da memória atualmente alocada para o sistema operacional e liberá-la para o SQL Server.
Estamos no SQL Server 2008, uma máquina de 64 bits, AWE não está habilitado, mínimo 4096 MB, máximo 10240 MB.
Encontrei o Guia do administrador de sistemas de Brent Ozar para a memória do Microsoft SQL Server , que indica que o Gerenciador de tarefas não é confiável. Também descobri que nossa expectativa de vida útil da página não indica pressão de memória. (Verificado por meio da consulta de Pinal Dave .)
Onde mais devo procurar? O que mais devo verificar? Gostaria de relatar ao desenvolvedor do banco de dados para confirmar suas suspeitas ou provar que estão incorretas.
EDIT : modificou minha pergunta atual. Eu aprecio e concordo que essas consultas são esmagadoras, provavelmente mais lentas por outros motivos que não problemas de memória. Estou em uma situação, no entanto, que preciso provar que a memória não é a culpada em geral. Ou seja, provar que algumas consultas são mais lentas por outros motivos não cumprirá minha tarefa. Gostaria de entender onde posso obter essas informações e quais métricas devo verificar.
A única maneira de provar que não é um problema de memória é provando que é outra coisa . E isso exige que você identifique a causa raiz de seus problemas de desempenho. Eu recomendo que você siga uma metodologia como Waits and Queues . A equipe do SQLCAT também publicou um pôster de fluxograma de solução de problemas que você pode seguir.
Como comentário geral: se alguém está oferecendo a você a compra de mais memória no servidor, diga SIM e, em seguida, faça a análise da causa raiz. Não importa se a causa raiz dos problemas são verificações de tabela, o SQL Server sempre pode usar mais memória.
Para abordar apenas a preocupação de seus desenvolvedores (ou seja, demonstrar que a memória não é o problema), você pode começar provando que a consulta não está esperando por concessões de memória e que a expectativa de vida da página está em uma figura confortável.
Bolsas de memória (de Glen Berry):
Expectativa de vida da página:
A partir daí, seguiria o conselho dos comentários e identificaria qual é o problema real, em vez de focar no que não é.