Planejamento de capacidade e auditorias de fragmentação
Preveja o crescimento do disco e de IOPS, audite regularmente a fragmentação de tabelas e índices e planeje atualizações antes de ficar sem recursos.
Planejamento de capacidade e auditorias de fragmentação é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.
O que prever
Para dimensionar seu banco de dados para os próximos 6 a 12 meses, você precisa projetar:
- Uso do disco (dados + WAL + índices)
- Demanda de IOPS
- Conjunto de trabalho na RAM
- Número de conexões
Crescimento do disco
Acompanhe a tendência do crescimento recente:
SELECT pg_size_pretty(pg_database_size(current_database()));
SELECT pg_size_pretty(pg_total_relation_size(t.oid)) AS total,
relname
FROM pg_class t
WHERE relkind = 'r'
ORDER BY pg_total_relation_size(t.oid) DESC LIMIT 20;Acompanhamento do crescimento por tabela
Agende uma tarefa de registro de métricas e crie um gráfico:
INSERT INTO size_history (ts, tablename, size_bytes)
SELECT NOW(), relname, pg_total_relation_size(oid)
FROM pg_class WHERE relkind = 'r';Estimativa de IOPS
As tabelas com maior atividade de E/S de leitura aparecem em pg_stat_user_tables:
SELECT relname, seq_tup_read, idx_tup_fetch,
seq_tup_read + idx_tup_fetch AS total_reads
FROM pg_stat_user_tables
ORDER BY total_reads DESC LIMIT 20;Dimensionamento da RAM
shared_buffers ≈ 25% da RAM. effective_cache_size ≈ 75% (uma indicação para o planejador, não uma alocação). work_mem por conexão × conexões não deve exceder a RAM disponível.
Auditoria de inchaço
Encontre as tabelas com mais linhas mortas:
SELECT relname,
n_live_tup,
n_dead_tup,
round(n_dead_tup::numeric / NULLIF(n_live_tup, 0), 2) AS dead_ratio,
last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 20;Inchaço de índices
Use pgstattuple ou ferramentas integradas:
CREATE EXTENSION pgstattuple;
SELECT relname,
pg_size_pretty(pg_relation_size(indexrelid)) AS size,
(pgstatindex(indexrelid::regclass)).leaf_fragmentation
FROM pg_stat_user_indexes
ORDER BY pg_relation_size(indexrelid) DESC LIMIT 20;Índices não utilizados
Encontre-os e remova-os — eles aumentam as gravações:
SELECT schemaname, relname, indexrelname,
pg_size_pretty(pg_relation_size(indexrelid))
FROM pg_stat_user_indexes
WHERE idx_scan = 0
AND indexrelname NOT LIKE '%_pkey'
ORDER BY pg_relation_size(indexrelid) DESC;Auditoria de conexões
Quantos clientes estão conectados e qual é o estado deles:
SELECT datname, usename, application_name, state, COUNT(*)
FROM pg_stat_activity
GROUP BY 1,2,3,4 ORDER BY 5 DESC;Transações longas
A causa da falta de atividade do vacuum:
SELECT pid, state, xact_start, NOW() - xact_start AS xact_age, query
FROM pg_stat_activity
WHERE xact_start IS NOT NULL
ORDER BY xact_age DESC NULLS LAST LIMIT 20;WAL e arquivos de arquivamento
Monitore a taxa de geração de WAL para dimensionar o armazenamento de arquivamento:
SELECT pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), '0/0')) AS total_wal_generated;Planejar o failover
O disco da réplica deve ter o mesmo tamanho do primário. Verifique se a taxa de sincronização da réplica ≥ taxa de gravação do primário.
Resumo
O planejamento de capacidade consiste em criar gráficos das métricas corretas.
- Crescimento do tamanho por tabela
- Proporção de linhas mortas
- Índices não utilizados
- Transações longas bloqueando o vacuum
- Contagens de conexões
Verificação rápida
Qual exibição você consulta para encontrar as tabelas com mais linhas mortas ao planejar o vacuum?
Perguntas Frequentes
A aula “Planejamento de capacidade e auditorias de fragmentação” é grátis?
Sim — o texto completo de “Planejamento de capacidade e auditorias de fragmentação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.
O que vou aprender em “Planejamento de capacidade e auditorias de fragmentação”?
Preveja o crescimento do disco e de IOPS, audite regularmente a fragmentação de tabelas e índices e planeje atualizações antes de ficar sem recursos. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Academy?
Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Planejamento de capacidade e auditorias de fragmentação”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Academy?
Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- pg_stat_statements: principais consultas
- pgBadger para análise de registros
- Agrupamento de conexões: PgBouncer
- Planejamento de capacidade e auditorias de fragmentação