Como faço para verificar o uso de memória pelo meu servidor SQL na caixa de produção. Estou usando o SQL Server 2016. Sempre que verifico o gerenciador de tarefas, ele mostra acima de 90%. Eu não acho que seja o uso real de memória pelo servidor sql.
Eu tenho uma ferramenta de desempenho SQL grafana que mostra o uso da CPU muito menos do que vejo no gerenciador de tarefas. Verifiquei o Monitor de Recursos, pode-se ver o valor médio da CPU. Estou confuso sobre qual é o uso de memória do servidor SQL. Estou tentando determinar se a pressão da memória é um problema para alguns dos meus problemas.
Alguém pode direcionar para uma explicação boa/adequada.
script muito útil: https://github.com/ktaranov/sqlserver-kit/blob/master/Scripts/SQLServer_Memory_Information.sql
você vê a utilização de memória detalhada:
https://www.sqlskills.com/blogs/glenn/sql-server-diagnostic-information-queries-for-november-2017/ Consultas de informações de diagnóstico do SQL Server 2017:
consulte o comentário
(Consulta 14)
(47)
(62)
(63)
(64)
PS esta não é uma resposta exaustiva
Eu começaria dizendo que o Gerenciador de Tarefas não é um local correto para medir o consumo de memória do SQL Server, ele não informará o valor correto quando a conta de serviço do SQL Server tiver o privilégio Páginas bloqueadas na memória (LPIM). Isso ocorre porque normalmente o gerenciador de tarefas rastreia
Process Private bytes
qual é a memória paginável e alocada por meio da função VirtualAlloc() , mas com a conta de serviço com o bloco LPIM de alocação de memória é feito pela API AWE , que não é paginável, portanto, o gerenciador de tarefas não o rastreia e isso pode levar a erros valor.É bastante normal que o SQL Server utilize a memória alocada a ele, o que geralmente parece estar usando muita memória, mas isso é bastante normal. Não entre em pânico se alguma ferramenta estiver mostrando baixa utilização da CPU e o gerenciador de tarefas estiver mostrando muita memória, isso pode ser normal. Para saber quanta memória física o SQL Server está usando, use a consulta abaixo
Phy_Memory_usedby_Sqlserver_MB -- Fornece a memória física total usada pelo SQL Server em MB Total_Memory_usedBy_SQLServer_MB- - Fornece a memória total (RAM + arquivo de página) usada pelo SQL Server em MB
Para ler mais sobre por que o gerenciador de tarefas não deve ser usado, consulte Diversão com páginas bloqueadas, AWE, Gerenciador de tarefas e o conjunto de trabalho…
Não tenho certeza sobre a ferramenta grafana, mas se você executar a consulta abaixo ela mostra a memória atualmente alocada
Você deve deixar de fora o gerenciador de tarefas, pois ele não relata adequadamente as informações de alocação de memória em alguns casos, dependendo das rotinas de alocação de memória usadas pelo aplicativo. No sistema operacional, você deve ser bom com o perfmon, pois deve relatar o uso da memória corretamente. Você também pode usar SQL DMVs relatando informações de memória, por exemplo, sys.dm_os_sys_memory (há mais dmvs relacionados à memória, dependendo de suas necessidades e da versão do SQL Server).
Aqui está um artigo explicando o gerenciador de tarefas relatando incorretamente o uso do memroy do SQL Server:
LINK: stop-using-task-manager-to-check-sqls-memory-usage