Por que particionar: poda e manutenção
Entenda as vantagens do particionamento: poda de consultas, VACUUM mais rápido e arquivamento mais simples.
Por que particionar: poda e manutenção é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 1 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 é particionamento?
Dividir uma tabela lógica em várias tabelas físicas (partições), cada uma contendo um subconjunto das linhas. As consultas examinam somente as partições relevantes.
Por que usar particionamento?
Tabelas grandes causam problemas:
- Os índices ficam enormes e as buscas mais lentas
- VACUUM leva horas
- Os backups são lentos
- Algumas consultas examinam dados desnecessariamente
O particionamento resolve os quatro problemas.
Eliminação de partições
O planejador pode SKIP partições que não podem corresponder a uma cláusula WHERE:
EXPLAIN SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Only March partition scanned; older partitions skipped.
-- Plan rows: 1M, not 100B.Quando particionar
Particione quando:
- A tabela estiver na faixa de 100GB ou mais
- Você tiver uma chave de particionamento natural (data, locatário ou região)
- A maioria das consultas filtrar por essa chave
- Os dados antigos puderem ser arquivados ou removidos
Quando NÃO particionar
Não particione apenas porque parece interessante:
- Tabelas menores que alguns GB não se beneficiam
- Se as consultas não filtrarem pela chave de particionamento, você terá NO eliminação de partições
- Isso adiciona complexidade operacional (gerenciamento das partições)
Estratégias de particionamento
O PostgreSQL oferece suporte a três:
- Intervalo — as partições abrangem intervalos de valores (datas e identificadores)
- Lista — as partições contêm valores específicos (países e locatários)
- Hash — usa hashing modular para obter uma distribuição uniforme
Remoção barata
Remover uma partição é instantâneo — não há exclusão linha a linha:
DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.Manutenção mais fácil
VACUUM, REINDEX e ANALYZE operam por partição. As janelas de manutenção se encaixam entre as partições, em vez de exigirem um único lote enorme.
Índices menores por partição
Cada partição tem seus próprios índices. Um B-tree em uma partição de 1GB tem menos níveis do que em uma de 1TB — as buscas são mais rápidas.
Particionamento é uma ferramenta, não uma solução mágica
Você não obtém desempenho gratuitamente — obtém eliminação de partições para consultas que filtram pela chave de particionamento e manutenção mais fácil. Se esses benefícios não se aplicarem, você apenas adicionará complexidade.
Particionamento nativo (declarativo) do PostgreSQL
Disponível desde o PG 10. Cada partição é uma tabela real:
CREATE TABLE events (
id BIGSERIAL,
ts TIMESTAMPTZ NOT NULL,
user_id BIGINT,
data JSONB
) PARTITION BY RANGE (ts);
CREATE TABLE events_2024_01 PARTITION OF events
FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');Antes do PG10: particionamento por herança
Sistemas legados usam herança de tabelas e gatilhos. Evite essa abordagem em códigos novos — o particionamento declarativo é mais simples e rápido.
Resumo
O particionamento é especialmente útil em tabelas grandes, agrupadas por tempo ou segmentadas por locatário.
- A eliminação de partições ignora partições irrelevantes
- A manutenção por partição é mais rápida
- DROP TABLE substitui um DELETE de 100GB
- Não é mágico — só ajuda quando as consultas correspondem à chave de particionamento
Verificação rápida
Você particiona uma tabela por mês e executa SELECT * FROM events WHERE country = 'US' sem filtro de data. O particionamento ajuda?
Perguntas Frequentes
A aula “Por que particionar: poda e manutenção” é grátis?
Sim — o texto completo de “Por que particionar: poda e manutençã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 “Por que particionar: poda e manutenção”?
Entenda as vantagens do particionamento: poda de consultas, VACUUM mais rápido e arquivamento mais simples. 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 1 de 4.
Quanto tempo leva a aula “Por que particionar: poda e manutençã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
- Por que particionar: poda e manutenção
- Particionamento por intervalo, lista e hash
- Desanexação e anexação de partições
- Consultas eficientes entre partições