0Pricing
SQL Academy · Leçon

Partitionnement par intervalle, liste et hachage

Choisissez la stratégie de partitionnement adaptée : intervalle pour les séries temporelles, liste pour les locataires et hachage pour une répartition uniforme.

Partitionnement par intervalle, liste et hachage est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

Partitionnement par plages

Chaque partition couvre une plage continue de valeurs. C’est la méthode la plus courante pour les séries temporelles :

CREATE TABLE events (
  id BIGSERIAL,
  ts TIMESTAMPTZ NOT NULL,
  data JSONB
) PARTITION BY RANGE (ts);

CREATE TABLE events_2024_q1 PARTITION OF events
  FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');
CREATE TABLE events_2024_q2 PARTITION OF events
  FOR VALUES FROM ('2024-04-01') TO ('2024-07-01');

Les limites des plages sont semi-ouvertes

FROM est inclusif, TO est exclusif. Les limites s’alignent proprement : aucun chevauchement ni intervalle manquant.

Partitionnement par liste

Chaque partition contient des valeurs spécifiques :

CREATE TABLE customers (
  id BIGSERIAL,
  country TEXT NOT NULL,
  name TEXT
) PARTITION BY LIST (country);

CREATE TABLE customers_us PARTITION OF customers FOR VALUES IN ('US');
CREATE TABLE customers_eu PARTITION OF customers FOR VALUES IN ('DE','FR','IT','ES','NL');
CREATE TABLE customers_other PARTITION OF customers DEFAULT;

Partition DEFAULT

Elle recueille les lignes qui ne correspondent à aucune autre partition. Sans elle, les INSERT de lignes ne correspondant à aucune partition échouent.

Partitionnement par hachage

Les lignes sont réparties en fonction du hachage de la clé de partitionnement. Cette méthode est utile lorsque vous souhaitez une répartition uniforme sans disposer d’une plage ou d’une liste naturelle :

CREATE TABLE sessions (
  id UUID,
  user_id BIGINT,
  data JSONB
) PARTITION BY HASH (user_id);

CREATE TABLE sessions_0 PARTITION OF sessions FOR VALUES WITH (MODULUS 4, REMAINDER 0);
CREATE TABLE sessions_1 PARTITION OF sessions FOR VALUES WITH (MODULUS 4, REMAINDER 1);
CREATE TABLE sessions_2 PARTITION OF sessions FOR VALUES WITH (MODULUS 4, REMAINDER 2);
CREATE TABLE sessions_3 PARTITION OF sessions FOR VALUES WITH (MODULUS 4, REMAINDER 3);

Choisir une stratégie

  • Range — séries temporelles, identifiants qui augmentent de manière monotone
  • List — locataires, pays, niveaux prioritaires
  • Hash — lorsqu’il n’existe pas de déséquilibre naturel et que vous recherchez simplement le parallélisme

Sous-partitionnement

Les partitions peuvent elles-mêmes être partitionnées (sur plusieurs niveaux) :

CREATE TABLE events_2024 PARTITION OF events
  FOR VALUES FROM ('2024-01-01') TO ('2025-01-01')
  PARTITION BY HASH (user_id);
-- 2024 is a yearly range partition, internally hashed by user_id.

Index sur les tables partitionnées

Les index de la table parente sont automatiquement propagés à toutes les partitions. Les contraintes UNIQUE doivent inclure la clé de partitionnement :

CREATE INDEX events_user_idx ON events (user_id);
-- Creates one index per partition automatically.

ALTER TABLE events ADD CONSTRAINT events_uniq UNIQUE (id, ts);
-- ts must be in the constraint because it's the partition key.

Clés primaires et partitions

La PRIMARY KEY d’une table partitionnée doit inclure la colonne de partitionnement. Il s’agit d’une contrainte fondamentale du partitionnement déclaratif.

Ajouter et supprimer des partitions

Opérations économiques :

CREATE TABLE events_2024_q3 PARTITION OF events
  FOR VALUES FROM ('2024-07-01') TO ('2024-10-01');

DROP TABLE events_2023_q1;
-- Instant; equivalent to deleting all old data.

Création automatique des partitions

Postgres ne crée pas automatiquement les futures partitions. Solutions courantes :

  • l’extension pg_partman — partitions mensuelles gérées automatiquement
  • une tâche planifiée qui exécute CREATE pour la partition suivante

Clés étrangères

Les FK vers une table partitionnée nécessitent PG 12+. Les FK FROM une table partitionnée vers une table normale fonctionnent normalement.

Récapitulatif

Trois stratégies de partitionnement couvrent la plupart des cas.

  • Range pour les données temporelles ou séquentielles
  • List pour les ensembles discrets
  • Hash pour une répartition uniforme
  • La PK doit inclure la colonne de partitionnement

Vérification rapide

Vous souhaitez partitionner une table de sessions par user_id avec une distribution uniforme et sans ordre naturel. Quelle stratégie choisir ?

Questions Fréquemment Posées

La leçon « Partitionnement par intervalle, liste et hachage » est-elle gratuite ?

Oui — le texte complet de « Partitionnement par intervalle, liste et hachage » 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 « Partitionnement par intervalle, liste et hachage » ?

Choisissez la stratégie de partitionnement adaptée : intervalle pour les séries temporelles, liste pour les locataires et hachage pour une répartition uniforme. 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 2 sur 4.

Combien de temps prend la leçon « Partitionnement par intervalle, liste et hachage » ?

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

  1. Pourquoi partitionner : élagage et maintenance
  2. Partitionnement par intervalle, liste et hachage
  3. Détacher et rattacher des partitions
  4. Interroger efficacement plusieurs partitions
← Retour à SQL Academy