Por que meu SQL Server consome tanta memória?

Pessoal, neste artigo explico porque o SQL Server consome tanta memória, algumas boas práticas e como podemos limitar, caso necessário.

server memory

Por padrão, o SQL Server solicita toda a memória disponível ao Sistema Operacional e isso pode ser um problema. Principalmente quando falamos de um servidor que não é dedicado ao banco de dados.

O SQL Server trabalha com páginas de dados e assim como a maioria dos SGBDs, ele prefere que essas páginas estejam em memória.

Dessa forma há um ganho em performance já que o acesso das páginas em memória é muito mais rápido que o acesso feito em disco. Conforme você utiliza o SGBD, as páginas vão subindo para a memória.

Configurando o Max Server Memory

Para que limitemos a quantidade de memória que o SQL Server pode utilizar, basta alterar a configuração da instância “Max Server Memory”.

Ou com T-SQL:

EXEC sys.sp_configure N'max server memory (MB)', N'2048'; RECONFIGURE;
GO

Boas práticas

Nesse exemplo eu configurei o máximo em 2GB pois é uma instância instalada em meu computador pessoal.

Caso esteja configurando um servidor de banco de dados, um bom ponto de partida é deixar para o sistema operacional cerca de 10% da memória total, ou 4GB, o que for maior. Exemplos:

Total (GB)Total (MB) 10% do total (MB)CálculoMax Server Memory (MB)
16GB16384163916384-409612288
32GB32768327932768-409628672
64GB65536655465536-655458983
128GB13107213108131072-13108117964
Percebam que se 10% do total for menor que 4096MB (4GB), eu subtraio 4GB e caso contrário subtraio o valor equivalente aos 10%.

Depois você pode monitorar o consumo através do performance monitor (perfmon) com o contador Memory/Available MBytes. Se perceber que este contador está muito baixo (abaixo de 1024MB) libere um pouco mais de memória para o sistema operacional.

No entanto, algumas variáveis podem influenciar este número:

  • Ter outras aplicações além do SQL Server rodando no servidor, por exemplo: Reporting Services ou Analysis Services. Nesse caso reserve um pouco mais de memória para o sistema operacional.
  • Ter mais de uma instância rodando no mesmo servidor: você terá que configurar a memória para cada uma delas considerando a necessidade da(s) outra(s).

Espero que tenha ajudado! Até a próxima.

Veja outros posts:

Post criado 10

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados

Comece a digitar sua pesquisa acima e pressione Enter para pesquisar. Pressione ESC para cancelar.

De volta ao topo