Qual é a fórmula para calcular o tamanho máximo do buffer pool (cache de dados) para SQL Server (quando houver apenas uma instância da máquina).
Digamos que a máquina tenha 1 GB de memória física, qual é o tamanho máximo do buffer pool nesse cenário?
Suponha que a memória máxima do servidor seja 0.
A pergunta surgiu ao ler sobre concessões de memória e li que o semáforo de recurso pode usar 75% do buffer pool para concessões de memória de consulta. Então a pergunta natural é como o buffer pool é calculado.
Obrigado
Com a memória máxima do servidor definida como 0, dois fatores determinarão a quantidade de memória que o SQL Server usará e, portanto, o tamanho do pool de buffers.
Mas antes de falar sobre isso, considere que, sem quaisquer restrições, o SQL Server lerá uma página de dados na memória e a manterá lá até que outra coisa solicite esse espaço.
Tamanho se os bancos de dados determinarem o tamanho do buffer pool. Se você tiver um banco de dados de 20 GB, qualquer 128 GB de memória do sistema, é provável que o pool de buffers cresça para cerca de 20 GB, mas não maior. Neste ponto, todo o banco de dados estaria na memória.
O outro fator que limitará o buffer pool é o Windows. O Windows permitirá que o SQL consuma memória enquanto outro aplicativo ou serviço não precisar dela. É muito possível que o SQL Server queira memória adicional, mas que o Windows não a conceda. Também é possível a um Windows recuperar a memória. Tudo isso depende de quais outros serviços e aplicativos são executados no servidor.
Portanto, não há realmente um número definido. O SQL Server o aumentará o máximo possível, na tentativa de colocar todo o banco de dados na memória, até que o Windows diga “não”.
Quanto ao tamanho que você deve planejar para que seja? Essa resposta pode variar. Comece com uma quantidade nominal de memória, digamos 1/8 a 1/4 do tamanho do banco de dados e monitore-o quanto à contenção de memória. Se você vir algum, aumente a memória até que não veja mais.