Autogrowth e Disk Space no SQL Server: O Inimigo Silencioso

abril 29, 2025 | por dbsnoop

Autogrowth e Disk Space no SQL Server: O Inimigo Silencioso

Você já acordou e viu seu SQL Server implorando por misericórdia, ou pior, aquele alerta bonito:

“The transaction log for database X is full because the log file is full.”

Pois é, bem-vindo ao maravilhoso mundo do Autogrowth sem controle.

Hoje vamos desmistificar porque seu MDF e LDF podem virar monstros, e como domar isso antes que o disco grite.

O que é Autogrowth?

Quando seu banco (MDF) ou log de transações (LDF) enche até o limite atual, o SQL Server tenta aumentar automaticamente o tamanho do arquivo para continuar funcionando.

Parece mágico né?

 Mas spoiler: usado sem consciência, vira um dos maiores vilões de performance e disponibilidade.

Problemas comuns que bombam nos fóruns:

ProblemaCausa raiz
Banco “inchando” em pequenos saltosAutogrowth configurado como porcentagem (ex: +10%) em bases muito grandes
Fragmentação internaMuitos pequenos autogrowths criam fragmentos físicos no disco
Travadas no bancoDurante o autogrowth, o SQL Server trava a operação enquanto expande
Espaço em disco acaba de surpresaSem monitoramento de espaço + autogrowth salvando “na sorte”
Arquivos LDF gigantescosLogs sem checkpoint e sem truncação adequada

Como identificar que você está sofrendo com isso?

1. Consultar eventos de autogrowth no SQL Server:

SELECT database_id, file_id, growth, size
FROM sys.dm_io_virtual_file_stats(NULL, NULL);
 Vai mostrar histórico de crescimento de arquivos.

2. Consultar configurações de autogrowth:

SELECT name, type_desc, size * 8 / 1024 AS SizeMB,
       growth, is_percent_growth
FROM sys.master_files;

Veja se o crescimento está por porcentagem — se sim, já prepara o extintor.

Como corrigir e fazer direito

1. Defina Autogrowth por 

  • TAMANHO FIXO, não porcentagem

Errado:

  • Crescer 10% toda hora (em bases de 100GB, cresce 10GB de cada vez = trave, disco explode).

Certo:

  • Configure para crescer de forma fixa: exemplo +512MB para bases médias, ou +1GB/+2GB para bases grandes.

No SSMS:

  • Botão direito no banco → Properties → Files → Configure Autogrowth manualmente.

2. Aumente o tamanho inicial com folga planejada

Pare de deixar o banco nascer minúsculo e crescer 50 mil vezes!

Configure logo de início:

ALTER DATABASE SuaBase
MODIFY FILE (NAME = 'SuaBase', SIZE = 10GB);
  • E o Log (LDF) também!

3. Monitore espaço em disco como se fosse ouro

Dicas:

  • Configurar alertas de disco no próprio SQL Server (Policy-Based Management).
  • Ou usar monitoramento externo (Grafana, Zabbix, Prometheus, dbsnOOp Flightdeck?).

 Como estimar o tempo de crescimento?

  • O SQL Server trava o arquivo enquanto faz o crescimento.
  • Quanto maior o crescimento solicitado, maior o tempo de bloqueio.
  • Regra prática: crescimento de 1GB em disco SSD rápido = bloqueio de 1–2 segundos.
  • Em disco lento (HDD), pode ser 5–10 segundos ou mais!

Se precisar crescer 50GB de uma vez — melhor fazer à noite.

Riscos de mexer sem cuidado

  • Forçar crescimento grande pode lotar o disco sem volta (sem espaço livre para rollback).
  • Deixar crescimento automático sem controle causa mini-“DDoS” interno no servidor.
  • Shrinkar (usar DBCC SHRINKFILE) toda hora para “economizar espaço” = fragmentação e ainda mais lentidão.

Moral: cresce de forma planejada, ajustada e com monitoramento — e esquece o shrink!

Dicas finais de sobrevivência:

  • Autogrowth configurado fixo e controlado = banco saudável.
  • Cresça manualmente em horários de baixa demanda.
  • Monitore espaço como se fosse vida.
  • E nunca, nunca mesmo, deixe o LDF crescer sem backup ou truncação.

Checklist Anti-Autogrowth Caótico (SQL Server)

Diagnóstico rápido:

  • Já verifiquei se o autogrowth dos arquivos MDF e LDF é por tamanho fixo (não porcentagem).
  • Consultei as configurações atuais de crescimento com:
SELECT name, growth, is_percent_growth FROM sys.master_files;

Correções básicas:

  • Configurei crescimento de arquivos para valores fixos:
    • Exemplo recomendado: +512MB para bancos pequenos/medios, +1GB ou mais para grandes.
  • Ajustei o tamanho inicial dos arquivos para evitar autogrowths frequentes:
ALTER DATABASE MinhaBase
MODIFY FILE (NAME = 'MinhaBase', SIZE = 10GB);

Monitoramento obrigatório:

  • Ativei alertas de espaço em disco livre (pelo SQL Server ou ferramentas externas).
  • Verifico periodicamente crescimento inesperado nos arquivos via:
DBCC SQLPERF(logspace);

Evitar as armadilhas clássicas:

  • NUNCA deixar crescimento automático em porcentagem para bases grandes.
  • NUNCA rodar DBCC SHRINKFILE como rotina de manutenção. (Só em casos críticos!)
  • NUNCA ignorar o LDF: faça backups de log para evitar crescimento infinito.

Antes de qualquer crescimento manual grande:

  • Estimei o tempo que a expansão vai levar baseado no tipo de disco.
  • Programei a operação em janela de manutenção (preferencialmente à noite).

Lembrete final:

Autogrowth mal configurado não quebra só o banco — quebra o sistema inteiro.

Cresça com planejamento, monitoramento e respeito ao disco. Deixar banco de dados, o sistema, e, a empresa quebrar por causa de falta de disco é de cair o…

Visite nosso canal no youtube e aprenda sobre a plataforma e veja tutoriais

Agende uma demonstração aqui

Saiba mais sobre o Flightdeck!

Aprenda sobre monitoramento de banco de dados com ferramentas avançadas aqui.

Compartilhar:

Leia mais

MONITORE SEUS ATIVOS COM O FLIGHTDECK

SEM INSTALAÇÃO – 100% SAAS

Preencha para receber o acesso ao trial

*Obrigatórias