0Pricing
SQL Academy · Lezione

Perché partizionare: pruning e manutenzione

Comprenda i vantaggi del partizionamento: pruning delle query, VACUUM più rapido e archiviazione più semplice.

Perché partizionare: pruning e manutenzione è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 1 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.

Che cos'è il partizionamento?

La suddivisione di una tabella logica in molte tabelle fisiche (partizioni), ognuna contenente un sottoinsieme di righe. Le query analizzano solo le partizioni pertinenti.

Perché usarlo?

Le tabelle di grandi dimensioni causano diversi problemi:

  • Gli indici diventano enormi e le ricerche più lente
  • VACUUM richiede ore
  • I backup sono lenti
  • Alcune query analizzano dati non necessari

Il partizionamento risolve tutti e quattro i problemi.

Potatura delle partizioni

Il planner può IGNORARE le partizioni che non possono soddisfare una clausola 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 usare il partizionamento

Partizioni una tabella quando:

  • La tabella supera i 100 GB circa
  • Disponi di una chiave di partizionamento naturale (data, tenant, area geografica)
  • La maggior parte delle query filtra usando quella chiave
  • I dati obsoleti possono essere archiviati o eliminati

Quando NON usare il partizionamento

Non partizioni una tabella solo perché sembra una soluzione interessante:

  • Le tabelle inferiori a pochi GB non ne traggono vantaggio
  • Se le query non filtrano usando la chiave di partizionamento, non si verifica ALCUNA potatura
  • Aggiunge complessità operativa (gestione delle partizioni)

Strategie di partizionamento

PostgreSQL ne supporta tre:

  • Range — le partizioni coprono intervalli di valori (date, ID)
  • List — le partizioni contengono valori specifici (Paesi, tenant)
  • Hash — hashing modulare per una distribuzione uniforme

Eliminazione a basso costo

Eliminare una partizione è istantaneo: non è necessario eliminare le righe una alla volta:

DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.

Manutenzione più semplice

VACUUM, REINDEX e ANALYZE operano per partizione. Le finestre di manutenzione possono essere distribuite tra le partizioni, invece di richiedere un unico batch enorme.

Indici più piccoli per partizione

Ogni partizione ha i propri indici. Un B-tree su una partizione da 1 GB ha meno livelli rispetto a uno su una partizione da 1 TB: le ricerche sono più veloci.

Il partizionamento è uno strumento, non una soluzione miracolosa

Non si ottengono prestazioni gratuitamente: si ottiene la potatura per le query che filtrano usando la chiave di partizionamento e una manutenzione più semplice. Se queste condizioni non si applicano, si aggiunge soltanto complessità.

Partizionamento nativo (dichiarativo) di PostgreSQL

Disponibile a partire da PG 10. Ogni partizione è una tabella reale:

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');

Prima di PG10: partizionamento tramite ereditarietà

I sistemi legacy usano l'ereditarietà delle tabelle insieme ai trigger. Lo eviti per il nuovo codice: il partizionamento dichiarativo è più semplice e veloce.

Riepilogo

Il partizionamento è particolarmente efficace per tabelle grandi, organizzate per intervalli temporali o segmentate per tenant.

  • La potatura ignora le partizioni irrilevanti
  • La manutenzione per partizione è più veloce
  • DROP TABLE sostituisce un DELETE da 100 GB
  • Non è una soluzione miracolosa: è utile solo se le query usano la chiave di partizionamento

Verifica rapida

Partizioni una tabella per mese ed esegui SELECT * FROM events WHERE country = 'US' senza un filtro sulla data. Il partizionamento è utile?

Domande Frequenti

La lezione «Perché partizionare: pruning e manutenzione» è gratuita?

Sì — il testo completo di «Perché partizionare: pruning e manutenzione» è 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 «Perché partizionare: pruning e manutenzione»?

Comprenda i vantaggi del partizionamento: pruning delle query, VACUUM più rapido e archiviazione più semplice. 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 1 di 4.

Quanto tempo richiede la lezione «Perché partizionare: pruning e manutenzione»?

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

  1. Perché partizionare: pruning e manutenzione
  2. Partizionamento per intervallo, lista e hash
  3. Scollegare e collegare le partizioni
  4. Interrogare in modo efficiente tra le partizioni
← Torna a SQL Academy