Tous les termes du glossaire

Partitionnement de tables

Qu’est-ce que le partitionnement de tables dans PostgreSQL ?

Le partitionnement divise une table logique en tables physiques plus petites, par intervalle, par liste ou par hachage, afin que les requêtes et la maintenance ne touchent que les partitions nécessaires.

Avec le partitionnement déclaratif, vous créez une table partitionnée avec PARTITION BY, puis vous ajoutez des partitions qui contiennent chacune un intervalle de clés, une liste de valeurs ou un compartiment de hachage. Les applications lisent et écrivent dans la table parente, et PostgreSQL achemine chaque ligne vers la bonne partition.

L’élagage de partitions (partition pruning) permet au planificateur d’ignorer les partitions qui ne peuvent pas correspondre à la clause WHERE d’une requête. Le partitionnement rend aussi peu coûteux le retrait des anciennes données : supprimer ou détacher une partition est bien plus rapide que d’en retirer les lignes une par une. Les bénéfices n’apparaissent généralement que pour des tables qui seraient sinon très volumineuses.

Exemple

L’exemple crée des partitions mensuelles par intervalle et interroge EXPLAIN sur les lignes de novembre. Seule measurements_2026_11 apparaît dans la sortie, car l’élagage a ignoré la partition d’octobre.

CREATE TABLE measurements (
  taken_on date NOT NULL,
  value numeric
) PARTITION BY RANGE (taken_on);

CREATE TABLE measurements_2026_10 PARTITION OF measurements
  FOR VALUES FROM ('2026-10-01') TO ('2026-11-01');
CREATE TABLE measurements_2026_11 PARTITION OF measurements
  FOR VALUES FROM ('2026-11-01') TO ('2026-12-01');

INSERT INTO measurements VALUES ('2026-10-15', 1.5), ('2026-11-02', 2.5);

EXPLAIN SELECT * FROM measurements WHERE taken_on >= '2026-11-01';

Du SQL simple pour PostgreSQL 16 ou 17 standard, sans aucune extension. Exécutez-le dans une base de données vide que vous pouvez jeter ensuite.

Références

Documentation officielle de PostgreSQL (en anglais).

Termes associés