0Pricing
SQL Academy · Aula

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

  1. pg_stat_statements: principais consultas
  2. pgBadger para análise de registros
  3. Agrupamento de conexões: PgBouncer
  4. Planejamento de capacidade e auditorias de fragmentação
← Voltar para SQL Academy