
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:
Problema | Causa raiz |
Banco “inchando” em pequenos saltos | Autogrowth configurado como porcentagem (ex: +10%) em bases muito grandes |
Fragmentação interna | Muitos pequenos autogrowths criam fragmentos físicos no disco |
Travadas no banco | Durante o autogrowth, o SQL Server trava a operação enquanto expande |
Espaço em disco acaba de surpresa | Sem monitoramento de espaço + autogrowth salvando “na sorte” |
Arquivos LDF gigantescos | Logs 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
Saiba mais sobre o Flightdeck!
Aprenda sobre monitoramento de banco de dados com ferramentas avançadas aqui.