← Voltar ao blog
MySQL 12 de março de 2026 8 min de leitura

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.

SQL Server Max Server Memory: Como Configurar a Memória Corretamente e Evitar Lentidão

O que você vai aprender neste artigo

  • O que é o Max Server Memory e por que ele existe

  • Por 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:

  1. Clique com o botão direito no nome do servidor > Properties

  2. Vá até a aba Memory

  3. No campo Maximum server memory (in MB), insira o valor calculado

  4. 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 memory em qualquer instância de produção

  • Use 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.