Pessoal, neste artigo explico porque o SQL Server consome tanta memória, algumas boas práticas e como podemos limitar, caso necessário.
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álculo | Max Server Memory (MB) |
16GB | 16384 | 1639 | 16384-4096 | 12288 |
32GB | 32768 | 3279 | 32768-4096 | 28672 |
64GB | 65536 | 6554 | 65536-6554 | 58983 |
128GB | 131072 | 13108 | 131072-13108 | 117964 |
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: