Pourquoi partitionner : élagage et maintenance
Comprenez les avantages du partitionnement : élagage des requêtes, VACUUM plus rapide et archivage simplifié.
Pourquoi partitionner : élagage et maintenance est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Qu’est-ce que le partitionnement ?
Diviser une table logique en plusieurs tables physiques (partitions), chacune contenant un sous-ensemble de lignes. Les requêtes ne parcourent que les partitions pertinentes.
Pourquoi l’utiliser ?
Les grandes tables posent plusieurs problèmes :
- les index deviennent très volumineux et les recherches ralentissent
- VACUUM prend des heures
- les sauvegardes sont lentes
- certaines requêtes parcourent des données inutilement
Le partitionnement répond à ces quatre problèmes.
Élagage des partitions
Le planificateur peut SKIP les partitions qui ne peuvent pas correspondre à une clause 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.Quand partitionner
Partitionnez lorsque :
- la table atteint au moins 100 GB
- vous disposez d’une clé de partitionnement naturelle (date, locataire, région)
- la plupart des requêtes filtrent sur cette clé
- les anciennes données peuvent être archivées ou supprimées
Quand NE PAS partitionner
Ne partitionnez pas simplement parce que cela paraît intéressant :
- les tables de moins de quelques GB n’en tirent aucun avantage
- si les requêtes ne filtrent pas sur la clé de partitionnement, vous n’obtenez NO élagage
- cela ajoute une complexité opérationnelle (gestion des partitions)
Stratégies de partitionnement
PostgreSQL en prend en charge trois :
- Range — les partitions couvrent des plages de valeurs (dates, identifiants)
- List — les partitions contiennent des valeurs spécifiques (pays, locataires)
- Hash — hachage modulaire pour une répartition uniforme
Suppression économique
Supprimer une partition est instantané — aucune suppression ligne par ligne :
DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.Maintenance simplifiée
VACUUM, REINDEX et ANALYZE s’exécutent partition par partition. Les fenêtres de maintenance peuvent être réparties entre les partitions au lieu de nécessiter un seul traitement massif.
Des index plus petits par partition
Chaque partition possède ses propres index. Un arbre B sur une partition de 1 GB comporte moins de niveaux que sur une partition de 1 TB — les recherches sont plus rapides.
Le partitionnement est un outil, pas une solution miracle
Vous n’obtenez pas des performances gratuites : vous bénéficiez de l’élagage pour les requêtes qui filtrent sur la clé de partitionnement, ainsi que d’une maintenance simplifiée. Si ces conditions ne s’appliquent pas, vous ne ferez qu’ajouter de la complexité.
Partitionnement natif (déclaratif) de PostgreSQL
Disponible depuis PG 10. Chaque partition est une véritable table :
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');Avant PG10 : partitionnement par héritage
Les systèmes anciens utilisent l’héritage de tables et des déclencheurs. Évitez cette approche dans le nouveau code : le partitionnement déclaratif est plus simple et plus rapide.
Récapitulatif
Le partitionnement est particulièrement utile pour les grandes tables organisées par périodes ou segmentées par locataire.
- l’élagage ignore les partitions non pertinentes
- la maintenance par partition est plus rapide
- DROP TABLE remplace un DELETE de 100 GB
- ce n’est pas magique : cela n’est utile que si les requêtes correspondent à la clé de partitionnement
Vérification rapide
Vous partitionnez une table par mois et exécutez SELECT * FROM events WHERE country = 'US' sans filtre de date. Le partitionnement est-il utile ?
Questions Fréquemment Posées
La leçon « Pourquoi partitionner : élagage et maintenance » est-elle gratuite ?
Oui — le texte complet de « Pourquoi partitionner : élagage et maintenance » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Pourquoi partitionner : élagage et maintenance » ?
Comprenez les avantages du partitionnement : élagage des requêtes, VACUUM plus rapide et archivage simplifié. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Pourquoi partitionner : élagage et maintenance » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi partitionner : élagage et maintenance
- Partitionnement par intervalle, liste et hachage
- Détacher et rattacher des partitions
- Interroger efficacement plusieurs partitions