Desanexação e anexação de partições
Use ATTACH PARTITION e DETACH PARTITION para inserir e retirar partições sem bloquear as leituras.
Desanexação e anexação de partições é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 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.
Por que desanexar?
Você pode retirar uma partição antiga da tabela ativa sem excluir os dados. Usos comuns:
- Arquivar em um banco de dados separado
- Mover para um armazenamento mais barato
- Seguir o padrão de fazer backup e depois excluir
DETACH PARTITION
Remove a partição da tabela pai, mas mantém os dados:
ALTER TABLE events DETACH PARTITION events_2022;
-- events_2022 is now a standalone table.
-- Queries on events no longer see those rows.DETACH CONCURRENTLY (PG 14+)
Evita o bloqueio ACCESS EXCLUSIVE:
ALTER TABLE events DETACH PARTITION events_2022 CONCURRENTLY;
-- Two-step: detach pending, then finalize. App writes continue.Arquivando partições desanexadas
Depois de desanexar:
-- Backup with pg_dump:
pg_dump --table=events_2022 mydb > events_2022.sql
-- Move to a cold-storage Postgres or S3:
psql cold_db < events_2022.sql
-- Then drop from primary:
DROP TABLE events_2022;ATTACH PARTITION
Adiciona uma tabela existente como uma nova partição:
CREATE TABLE events_2025 (LIKE events INCLUDING ALL);
-- Load data with COPY or INSERT ... SELECT
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');Validação durante ATTACH
ATTACH verifica a nova partição para confirmar que cada linha se enquadra nos limites de FOR VALUES. Evite essa verificação criando uma restrição CHECK correspondente antes de fazer o attach:
ALTER TABLE events_2025
ADD CONSTRAINT events_2025_ts_check
CHECK (ts >= '2025-01-01' AND ts < '2026-01-01');
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');
-- No scan needed; PG trusts the CHECK.Janelas de tempo contínuas
Avance semanal ou mensalmente: crie previamente a próxima partição e exclua a mais antiga:
BEGIN;
CREATE TABLE events_2024_q4 PARTITION OF events FOR VALUES FROM ('2024-10-01') TO ('2025-01-01');
DROP TABLE events_2023_q4;
COMMIT;Trocando níveis de armazenamento
Desanexe uma partição, use ALTER TABLE … SET TABLESPACE para movê-la para um armazenamento mais lento e faça o attach novamente:
ALTER TABLE events DETACH PARTITION events_2022;
ALTER TABLE events_2022 SET TABLESPACE archive_disk;
ALTER TABLE events ATTACH PARTITION events_2022 FOR VALUES FROM ('2022-01-01') TO ('2023-01-01');Índices em partições anexadas
Para que uma partição seja anexada, seus índices precisam corresponder aos da tabela pai. O PG pode criar automaticamente os índices ausentes durante o ATTACH no PG 14+.
Troca atômica de partições
Coloque DETACH + ATTACH em uma transação para trocar atomicamente o conteúdo das partições. Um padrão comum é "criar a nova partição offline e depois substituí-la":
BEGIN;
ALTER TABLE events DETACH PARTITION events_2024_q1;
ALTER TABLE events ATTACH PARTITION events_2024_q1_new
FOR VALUES FROM ...;
COMMIT;Desempenho
DETACH e ATTACH são operações de catálogo — instantâneas quando as restrições são predefinidas. O truque da restrição CHECK é essencial em grande escala.
Recapitulação
Desanexar e anexar são as armas secretas do particionamento para manutenção online.
- DETACH PARTITION CONCURRENTLY para remoção online
- A restrição CHECK criada antes do attach dispensa a verificação
- Trocar, arquivar e mover entre níveis de armazenamento
- Operação atômica com BEGIN/COMMIT
Verificação rápida
Como evitar a verificação da tabela inteira ao executar ATTACH PARTITION?
Aprenda SQL com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 46
- Aulas
- 183
Perguntas Frequentes
A aula “Desanexação e anexação de partições” é grátis?
Sim — o texto completo de “Desanexação e anexação de partições” é 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 “Desanexação e anexação de partições”?
Use ATTACH PARTITION e DETACH PARTITION para inserir e retirar partições sem bloquear as leituras. 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 3 de 4.
Quanto tempo leva a aula “Desanexação e anexação de partições”?
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