Atualmente estou dando uma olhada no Pro SQL Server 2019 Administration: A Guide for the Modern DBA e descobri uma coisa que me confunde um pouco.
No Capítulo 5: CONFIGURANDO A INSTÂNCIA , a seção Memória mínima e máxima do servidor (páginas 139-140) diz:
Em muitos ambientes, é provável que você deseje fornecer o mesmo valor para memória mínima e máxima do servidor. Isso evitará a sobrecarga do SQL Server gerenciando dinamicamente a quantidade de memória reservada.
No entanto, se você tiver várias instâncias, o gerenciamento dinâmico de memória poderá ser benéfico para que a instância com a carga de trabalho mais pesada em um determinado momento possa consumir mais recursos.
... Supondo que você tenha uma instância e nenhum outro aplicativo, como pacotes SSIS, em execução no servidor, normalmente você definiria as configurações de memória mínima e máxima como o valor mais baixo do
- RAM - 2 GB
- (RAM / 8) * 7
No entanto, o conselho para " fornecer o mesmo valor para memória mínima e máxima do servidor " está em contradição com a documentação , que diz:
Não é recomendado definir a memória máxima do servidor (MB) e a memória mínima do servidor (MB) como o mesmo valor ou próximo dos mesmos valores.
Em que situações seria uma boa ideia definir a memória máxima do servidor e a memória mínima do servidor com o mesmo valor (ish)?
Ou estou entendendo mal alguma coisa sobre o conselho?
este é um conselho estúpido
Esse livro pode atendê-lo melhor mantendo uma mesa de centro nivelada ou algo assim. Quando você define a memória mínima do servidor igual à memória máxima do servidor, o SQL Server não pode mais usar a memória dinamicamente.
Veja: Gerenciamento dinâmico de memória :
Era uma recomendação (ruim) para VMs antes que os conselhos sobre reservas de memória de convidados e ativação de bloqueio de páginas na memória fossem seguidos com mais frequência. Bloquear páginas na memória tem um efeito geral semelhante, ao mesmo tempo que permite o uso dinâmico da memória no processo do SQL Server.
Em outras palavras, se você definir ambos com o mesmo valor, os consumidores de memória fora do buffer pool poderão enfrentar dificuldades. Você não quer isso, porque outros consumidores fazem coisas importantes, como gerenciar bloqueios e fornecer memória para execução de consultas.