Détacher et rattacher des partitions
Utilisez ATTACH PARTITION et DETACH PARTITION pour intégrer ou retirer des partitions sans bloquer les lectures.
Détacher et rattacher des partitions est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.
Pourquoi détacher ?
Vous pouvez retirer une ancienne partition de la table active sans supprimer les données. Utilisations courantes :
- Archiver dans une base de données distincte
- Déplacer vers un stockage moins coûteux
- Suivre le schéma sauvegarder puis supprimer
DETACH PARTITION
Retire la partition de la table parente tout en conservant les données :
ALTER TABLE events DETACH PARTITION events_2022;
-- events_2022 is now a standalone table.
-- Queries on events no longer see those rows.DETACH CONCURRENTLY (PG 14+)
Évite le verrou ACCESS EXCLUSIVE :
ALTER TABLE events DETACH PARTITION events_2022 CONCURRENTLY;
-- Two-step: detach pending, then finalize. App writes continue.Archivage des partitions détachées
Après le détachement :
-- Backup with pg_dump:
pg_dump --table=events_2022 mydb > events_2022.sql
-- Move to a cold-storage Postgres or S3:
psql cold_db < events_2022.sql
-- Then drop from primary:
DROP TABLE events_2022;ATTACH PARTITION
Ajoute une table existante comme nouvelle partition :
CREATE TABLE events_2025 (LIKE events INCLUDING ALL);
-- Load data with COPY or INSERT ... SELECT
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');Validation lors de ATTACH
ATTACH parcourt la nouvelle partition pour confirmer que chaque ligne respecte les limites de FOR VALUES. Évitez ce parcours en ajoutant au préalable une contrainte CHECK correspondante :
ALTER TABLE events_2025
ADD CONSTRAINT events_2025_ts_check
CHECK (ts >= '2025-01-01' AND ts < '2026-01-01');
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');
-- No scan needed; PG trusts the CHECK.Fenêtres temporelles glissantes
Faites avancer la fenêtre chaque semaine ou chaque mois : créez la partition suivante à l’avance, puis supprimez la plus ancienne :
BEGIN;
CREATE TABLE events_2024_q4 PARTITION OF events FOR VALUES FROM ('2024-10-01') TO ('2025-01-01');
DROP TABLE events_2023_q4;
COMMIT;Changement de niveau de stockage
Détachez une partition, exécutez ALTER TABLE … SET TABLESPACE pour la déplacer vers un stockage plus lent, puis rattachez-la :
ALTER TABLE events DETACH PARTITION events_2022;
ALTER TABLE events_2022 SET TABLESPACE archive_disk;
ALTER TABLE events ATTACH PARTITION events_2022 FOR VALUES FROM ('2022-01-01') TO ('2023-01-01');Index des partitions rattachées
Pour qu’une partition soit rattachée, ses index doivent correspondre à ceux de la table parente. PG peut créer automatiquement les index manquants pendant ATTACH avec PG 14 ou une version ultérieure.
Échange atomique de partitions
Entourez DETACH et ATTACH d’une transaction pour échanger atomiquement le contenu des partitions. Schéma courant : « construire la nouvelle partition hors ligne, puis la remplacer » :
BEGIN;
ALTER TABLE events DETACH PARTITION events_2024_q1;
ALTER TABLE events ATTACH PARTITION events_2024_q1_new
FOR VALUES FROM ...;
COMMIT;Performances
DETACH et ATTACH sont des opérations du catalogue : elles sont instantanées lorsque les contraintes sont définies à l’avance. L’astuce de la contrainte CHECK est essentielle à grande échelle.
Récapitulatif
Le détachement et le rattachement sont l’arme secrète du partitionnement pour la maintenance en ligne.
- DETACH PARTITION CONCURRENTLY pour un retrait en ligne
- Une contrainte CHECK préalable à ATTACH évite le parcours de validation
- Échanger, archiver, changer de niveau de stockage
- Rendre l’opération atomique avec BEGIN/COMMIT
Vérification rapide
Comment éviter le parcours de la table entière lors de l’exécution de ATTACH PARTITION ?
Apprends SQL avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 46
- Leçons
- 183
Questions Fréquemment Posées
La leçon « Détacher et rattacher des partitions » est-elle gratuite ?
Oui — le texte complet de « Détacher et rattacher des partitions » 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 « Détacher et rattacher des partitions » ?
Utilisez ATTACH PARTITION et DETACH PARTITION pour intégrer ou retirer des partitions sans bloquer les lectures. 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 3 sur 4.
Combien de temps prend la leçon « Détacher et rattacher des partitions » ?
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