De acordo com sys.dm_os_memory_clerks
, o uso total de RAM do meu servidor foi de 30 GB. Usando essas informações, defini max server memory (MB)
para 31.000. Fiquei chocado ao ver sys.dm_os_memory_clerks
o relatório de que o uso total de RAM do meu servidor era de 20 GB. Isso é duplamente confuso, visto que a documentação diz que max server memory (MB)
é apenas para o buffer pool
A opção max server memory limita apenas o tamanho do buffer pool do SQL Server. A opção de memória máxima do servidor não limita uma área de memória restante não reservada que o SQL Server deixa para alocações de outros componentes, como procedimentos armazenados estendidos, objetos COM, DLLs e EXEs não compartilhados.
É sys.dm_os_memory_clerks
uma má fonte de informações para essas decisões ou preciso apenas esperar que meu buffer pool se atualize?
más notícias
Sim, dm_os_memory_clerks é uma fonte única muito ruim para descobrir qual valor máximo de memória do servidor deve ser definido. Ele apenas mostra o que está consumindo memória no momento, o que pode mudar, oscilar e oscilar dependendo do que está acontecendo com o servidor.
Na maioria dos casos, a memória máxima do servidor deve ser definida como uma porcentagem da memória física disponível, com permissões para o sistema operacional e qualquer outra coisa em execução na caixa (incluindo instâncias ou componentes SQL empilhados, o que ainda é uma péssima ideia). Não vou entrar em detalhes sobre qual é a fórmula correta para isso, porque muitas vezes pode interferir em um ótimo fim de semana.
Você não mencionou quanta memória física o servidor possui ou qual edição do SQL Server você está executando (Standard x Enterprise), por isso é difícil dizer como você deve configurá-lo no topo de linha.
Como parece que você tem memória de sobra, provavelmente desejará verificar as estatísticas de espera, principalmente as esperas de PAGEIOLATCH_xx. Você pode achar meu procedimento armazenado sp_PressureDetector útil para combinar vários pontos de dados importantes em uma tela.
Além da seção de estatísticas de espera no topo, há três seções que detalham o uso de memória:
Alguns indicadores generalizados de que você é capaz de reduzir o máximo de memória do servidor seriam:
Esta não é uma lista exaustiva e certamente há outros fatores a serem considerados, mas isso deve ser suficiente para responder à sua pergunta sobre dm_os_memory_clerks ser uma má fonte de informação.