PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Perché non è possibile creare una tabella di partizionamento

Il "partizionamento dichiarativo della tabella", ovvero il partizionamento come funzionalità di prima classe del DBMS con la propria sintassi, era aggiunto in PostgreSQL 10 .

Nelle versioni precedenti, puoi ottenere lo stesso effetto con un po' più di sforzo usando "ereditarietà tabella". C'è una pagina nel manuale che descrive come farlo manualmente , riassunto come:

  1. Crea la tabella "master", da cui erediteranno tutte le partizioni.
  2. Crea diverse tabelle "figlie" che ereditano ciascuna dalla tabella principale.
  3. Aggiungi vincoli di tabella alle tabelle delle partizioni per definire i valori chiave consentiti in ciascuna partizione.
  4. Per ogni partizione, crea un indice sulle colonne chiave, così come qualsiasi altro indice che potresti desiderare.
  5. Facoltativamente, definire un trigger o una regola per reindirizzare i dati inseriti nella tabella principale alla partizione appropriata.
  6. Assicurati che il parametro di configurazione constraint_exclusion non sia disabilitato in postgresql.conf. In tal caso, le query non verranno ottimizzate come desiderato.

Per semplificare, se non riesci a eseguire l'aggiornamento alla versione 10, puoi utilizzare un'estensione come pg_partman che offre funzioni aggiuntive per l'impostazione e la gestione dei set di partizioni.