SQL Server Max Server Memory: Como Configurar a Memória Corretamente e Evitar Lentidão
O artigo aborda a configuração crítica do Max Server Memory no SQL Server, explicando por que o banco de dados tende a consumir toda a RAM disponível devido ao seu mecanismo de Buffer Pool. O texto apresenta uma fórmula prática para calcular a reserva necessária para o Sistema Operacional e outros serviços, fornece scripts T-SQL para aplicação e monitoramento (como o Page Life Expectancy), e detalha os erros comuns que levam à lentidão e instabilidade do servidor. É um manual de boas práticas para equilibrar a performance do banco de dados com a saúde do Windows.

O que você vai aprender neste artigo
O que é o
Max Server Memorye por que ele existePor que o SQL Server "come" toda a memória do servidor
Como calcular o valor ideal de memória para seu ambiente
Como aplicar a configuração com T-SQL
Como monitorar a pressão de memória
Erros comuns que podem travar seu servidor
Por que o SQL Server consome tanta memória?
Se você já abriu o Gerenciador de Tarefas de um servidor com SQL Server e se assustou com o consumo de RAM, saiba que isso é um comportamento esperado, mas que precisa ser gerenciado. O SQL Server foi projetado para usar o máximo de memória disponível para armazenar dados em cache (o chamado Buffer Pool). A lógica é simples: quanto mais dados ficam na memória, menos o servidor precisa acessar o disco, e o disco é muito mais lento que a RAM. O problema surge quando não existe um limite definido: o SQL Server vai consumindo memória até que o sistema operacional (SO) comece a reclamar. Quando isso acontece, o Windows passa a usar o arquivo de paginação (swap) como substituto da RAM, e, aí o desempenho desaba.
Resumindo: sem limite de memória configurado, o SQL Server pode "engolir" tanta RAM que o próprio Windows fica sem recursos para funcionar corretamente.
O que é o Max Server Memory?
O Max Server Memory (máximo de memória do servidor) é uma configuração nativa do SQL Server que define o teto máximo de RAM que o mecanismo de banco de dados pode alocar para o Buffer Pool. Parâmetro Descrição max server memory (MB) Limite máximo de memória para o SQL Server min server memory (MB) Mínimo garantido de memória para o SQL Server. Por padrão, o valor de max server memory vem configurado como 2.147.483.647 MB,ou seja, praticamente sem limite. Isso significa que, em um servidor sem esse ajuste, o SQL Server vai tentar usar tudo o que o hardware oferecer.
Qual o valor ideal? A fórmula prática
Não existe um número mágico, mas existe uma fórmula amplamente utilizada por DBAs para calcular um ponto de partida seguro:
Max Server Memory = RAM Total do Servidor
- Memória para o Sistema Operacional
- Memória para outros processos
- Memória para o SSAS/SSIS/SSRS (se instalados no mesmo servidor)
Quanto reservar para o Sistema Operacional?
Use esta tabela como referência:
RAM Total do Servidor Reservar para o SO Até 4 GB 1 GB 4 GB a 16 GB 2 GB 16 GB a 32 GB 4 GB 32 GB a 64 GB 6 GB a 8 GB Acima de 64 GB 10% da RAM total
Servidor com 32 GB de RAM, sem outros serviços instalados:
Max Server Memory = 32 GB - 4 GB (SO) = 28 GB = 28.672 MB
Como aplicar a configuração via T-SQL
Você pode configurar o Max Server Memory diretamente pelo SQL Server Management Studio (SSMS) ou via T-SQL. A forma mais rápida e rastreável é usando script:
-- Habilita opções avançadas de configuração
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
-- Define o limite máximo de memória (em MB)
-- Exemplo: 28 GB = 28.672 MB
EXEC sp_configure 'max server memory (MB)', 28672;
RECONFIGURE;
Atenção: a configuração entra em vigor imediatamente, sem necessidade de reiniciar o SQL Server. Porém, a memória já alocada só será liberada gradualmente conforme a demanda diminui.
Verificando a configuração atual
-- Verifica os valores configurados
EXEC sp_configure 'max server memory (MB)';
-- Ou de forma mais detalhada:
SELECT
name,
value,
value_in_use,
description
FROM sys.configurations
WHERE name = 'max server memory (MB)';
Como fazer pelo SQL Server Management Studio (SSMS)
Se preferir a interface gráfica:
Clique com o botão direito no nome do servidor > Properties
Vá até a aba Memory
No campo Maximum server memory (in MB), insira o valor calculado
Clique em OK
Como identificar se há pressão de memória no seu servidor
Antes de sair alterando configurações, vale verificar se o servidor realmente está sofrendo com falta de memória. Algumas consultas úteis:
Verificar o uso atual do Buffer Pool
SELECT
physical_memory_in_use_kb / 1024 AS memoria_usada_MB,
page_fault_count,
memory_utilization_percentage
FROM sys.dm_os_process_memory;
Verificar sinais de pressão de memória
SELECT
[notification_type],
[creation_time],
[request_status]
FROM sys.dm_os_ring_buffers
WHERE ring_buffer_type = N'RING_BUFFER_RESOURCE_MONITOR'
ORDER BY creation_time DESC;
Verificar Page Life Expectancy (PLE)
O PLE indica quantos segundos, em média, uma página de dados fica na memória antes de ser removida. Um PLE baixo pode indicar pressão de memória.
SELECT
object_name,
counter_name,
cntr_value AS PLE_segundos
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Page life expectancy'
AND object_name LIKE '%Buffer Manager%';
Referência: Para servidores com até 4 GB de Buffer Pool, um PLE abaixo de 300 segundos é sinal de alerta. Para servidores maiores, use a fórmula:
(GB de Buffer Pool / 4) × 300.
Cenários especiais: múltiplas instâncias ou serviços no mesmo servidor
Se o mesmo servidor hospeda mais de uma instância do SQL Server ou outros serviços como SSAS, SSRS ou SSIS, o cálculo precisa ser ajustado para dividir a memória disponível entre todos. Servidor com 64 GB e duas instâncias SQL Server:
Reserva para o SO: 8 GB
Memória disponível: 56 GB
Instância 1 (principal): 36 GB → max server memory = 36.864 MB
Instância 2 (secundária):20 GB → max server memory = 20.480 MB
Erros comuns ao configurar a memória
1. Não configurar limite algum
Deixar o valor padrão de 2 TB em um servidor de produção é uma das principais causas de lentidão sistêmica e travamentos do Windows.
2. Configurar um valor muito baixo
Limitar demais a memória do SQL Server força leituras constantes no disco, tornando as consultas lentas. Encontrar o equilíbrio é essencial.
3. Não considerar outros processos
Antivírus, agentes de backup, monitoramento e outros serviços também consomem RAM. Desconsiderá-los na conta pode resultar em problemas.
4. Confundir Max Server Memory com toda a memória do processo
O max server memory controla principalmente o Buffer Pool. Outros componentes do SQL Server (como compilação de queries, CLR, linked servers) alocam memória fora desse limite.
Checklist rápido de boas práticas
Sempre configure o
max server memoryem qualquer instância de produçãoUse a fórmula de reserva de memória como ponto de partida
Monitore o PLE regularmente
Ajuste o valor conforme a carga de trabalho crescer
Documente qualquer alteração feita na configuração
Em ambientes com múltiplas instâncias, distribua a memória entre todas
Configurar corretamente o Max Server Memory é uma das tarefas mais simples e com maior impacto positivo que um DBA pode fazer. É uma configuração de cinco minutos que pode evitar horas de dor de cabeça com lentidão e instabilidade. A regra de ouro é: o SQL Server precisa de memória para ser rápido, mas o Sistema Operacional também precisa de memória para manter tudo funcionando. Encontrar esse equilíbrio é o trabalho do DBA.
Gostou do conteúdo? Compartilhe com outros DBAs e continue acompanhando o blog para mais artigos sobre performance e administração do SQL Server.