Scollegare e collegare le partizioni
Utilizzi ATTACH PARTITION e DETACH PARTITION per aggiungere e rimuovere partizioni senza bloccare le letture.
Scollegare e collegare le partizioni è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Perché scollegare?
È possibile sostituire una vecchia partizione nella tabella attiva senza eliminare i dati. Usi comuni:
- Archiviazione in un database separato
- Spostamento su uno storage più economico
- Schema backup-then-drop
DETACH PARTITION
Rimuove la partizione dalla tabella padre, mantenendo i dati:
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 il lock ACCESS EXCLUSIVE:
ALTER TABLE events DETACH PARTITION events_2022 CONCURRENTLY;
-- Two-step: detach pending, then finalize. App writes continue.Archiviazione delle partizioni scollegate
Dopo aver scollegato la partizione:
-- 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
Aggiunge una tabella esistente come nuova partizione:
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');Convalida durante ATTACH
ATTACH analizza la nuova partizione per confermare che ogni riga rientri nei limiti di FOR VALUES. Eviti l'analisi definendo prima del collegamento un vincolo CHECK corrispondente:
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.Finestre temporali scorrevoli
Faccia avanzare la finestra ogni settimana o mese: crei prima la partizione successiva ed elimini quella più vecchia:
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;Cambio dei livelli di storage
Scolleghi una partizione, esegua ALTER TABLE … SET TABLESPACE per spostarla su uno storage più lento, quindi la colleghi nuovamente:
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');Indici sulle partizioni collegate
Per poter essere collegata, una partizione deve avere indici corrispondenti a quelli della tabella padre. PG può creare automaticamente gli indici mancanti durante ATTACH in PG 14 e versioni successive.
Scambio atomico di partizioni
Racchiuda DETACH e ATTACH in una transazione per scambiare atomicamente il contenuto delle partizioni. È uno schema comune per "creare offline la nuova partizione e poi sostituirla":
BEGIN;
ALTER TABLE events DETACH PARTITION events_2024_q1;
ALTER TABLE events ATTACH PARTITION events_2024_q1_new
FOR VALUES FROM ...;
COMMIT;Prestazioni
DETACH e ATTACH sono operazioni sul catalogo: risultano immediate quando i vincoli sono già impostati. La tecnica del vincolo CHECK è essenziale su larga scala.
Riepilogo
Scollegare e collegare partizioni è l'arma segreta del partizionamento per la manutenzione online.
- DETACH PARTITION CONCURRENTLY per la rimozione online
- Un vincolo CHECK definito prima del collegamento evita l'analisi di convalida
- Scambio, archiviazione e cambio di livello di storage
- Atomicità con BEGIN/COMMIT
Controllo rapido
Come si evita l'analisi dell'intera tabella quando si esegue ATTACH PARTITION?
Domande Frequenti
La lezione «Scollegare e collegare le partizioni» è gratuita?
Sì — il testo completo di «Scollegare e collegare le partizioni» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «Scollegare e collegare le partizioni»?
Utilizzi ATTACH PARTITION e DETACH PARTITION per aggiungere e rimuovere partizioni senza bloccare le letture. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Scollegare e collegare le partizioni»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché partizionare: pruning e manutenzione
- Partizionamento per intervallo, lista e hash
- Scollegare e collegare le partizioni
- Interrogare in modo efficiente tra le partizioni