Partitionnement declaratif

PostgreSQL 🔴 Senior

Définition

PostgreSQL découpé une table logique en plusieurs tables physiques (partitions) selon une stratégie RANGE, LIST ou HASH déclarée via PARTITION BY. Chaque partition se crée avec CREATE TABLE ... PARTITION OF, et le partition pruning éliminé automatiquement les partitions non concernées par une requête.

Analogie

Comme classer des archives papier par année dans des cartons séparés plutôt que dans un seul immense classeur : on ne sort que le carton de l'année recherchée.

Exemple de code

CREATE TABLE measurement (
  city_id int, logdate date, peaktemp int
) PARTITION BY RANGE (logdate);

CREATE TABLE measurement_y2026m01 PARTITION OF measurement
  FOR VALUES FROM ('2026-01-01') TO ('2026-02-01');

Cas d'usage

Archiver ou purger de très grandes tables temporelles (logs, mesures) en droppant une partition entière en une opération instantanée.

Anti-pattern

Oublier d'inclure la colonne de partitionnement dans une contrainte UNIQUE/PRIMARY KEY : PostgreSQL l'exige.

Termes liés

#sgbd#interview#database#postgresql

En entretien

  1. Explique-moi le principe du partitionnement déclaratif et donne un cas d'usage.

    PostgreSQL découpe une table logique en plusieurs tables physiques selon une stratégie RANGE, LIST ou HASH déclarée via PARTITION BY, un peu comme classer des archives par année dans des cartons séparés. C'est très utile pour archiver ou purger de grandes tables temporelles en droppant une partition entière en une opération instantanée.

  2. Quel piège faut-il connaître avec les contraintes UNIQUE sur une table partitionnée ?

    PostgreSQL exige d'inclure la colonne de partitionnement dans toute contrainte UNIQUE ou PRIMARY KEY. L'oublier empêche de créer cette contrainte sur la table partitionnée.

  3. Qu'est-ce que le partition pruning ?

    C'est le mécanisme qui élimine automatiquement les partitions non concernées par une requête, sans avoir à toutes les scanner. Dans l'exemple measurement_y2026m01, une requête ciblant janvier 2026 n'ira lire que cette partition.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre