0Pricing
SQL Academy · Lektion

Partitionen abtrennen und anhängen

Verwenden Sie ATTACH PARTITION und DETACH PARTITION, um Partitionen einzubinden oder zu entfernen, ohne Lesezugriffe zu blockieren.

Partitionen abtrennen und anhängen ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum DETACH?

Sie können eine alte Partition aus der aktiven Tabelle entfernen, ohne Daten zu löschen. Häufige Anwendungsfälle:

  • Archivierung in einer separaten Datenbank
  • Verschieben auf günstigeren Speicher
  • Muster „Sichern und anschließend löschen“

DETACH PARTITION

Entfernt die Partition aus der übergeordneten Tabelle, behält die Daten jedoch bei:

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+)

Vermeidet die Sperre ACCESS EXCLUSIVE:

ALTER TABLE events DETACH PARTITION events_2022 CONCURRENTLY;
-- Two-step: detach pending, then finalize. App writes continue.

Archivieren abgetrennter Partitionen

Nach dem Abtrennen:

-- 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

Fügt eine vorhandene Tabelle als neue Partition hinzu:

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');

Validierung während ATTACH

ATTACH durchsucht die neue Partition, um zu bestätigen, dass jede Zeile in die Grenzen von FOR VALUES passt. Vermeiden Sie die Suche, indem Sie vor ATTACH einen passenden CHECK-Constraint anlegen:

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.

Rollierende Zeitfenster

Wöchentlich/monatlich weiterschieben: Erstellen Sie die nächste Partition vorab und löschen Sie die älteste:

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;

Speicherklassen wechseln

Trennen Sie eine Partition, führen Sie ALTER TABLE … SET TABLESPACE für langsameren Speicher aus und hängen Sie sie anschließend wieder an:

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');

Indizes an angehängten Partitionen

Damit eine Partition angehängt werden kann, müssen ihre Indizes denen des übergeordneten Objekts entsprechen. PG kann fehlende Indizes während ATTACH unter PG 14+ automatisch erstellen.

Atomarer Partitionsaustausch

Führen Sie DETACH + ATTACH in einer Transaktion aus, um den Inhalt einer Partition atomar auszutauschen. Ein häufig verwendetes Muster für „neue Partition offline erstellen und anschließend ersetzen“:

BEGIN;
  ALTER TABLE events DETACH PARTITION events_2024_q1;
  ALTER TABLE events ATTACH PARTITION events_2024_q1_new
    FOR VALUES FROM ...;
COMMIT;

Performance

DETACH und ATTACH sind Katalogoperationen – bei vorab gesetzten Constraints sofort abgeschlossen. Der CHECK-Constraint-Trick ist bei großen Datenmengen unverzichtbar.

Zusammenfassung

Detach/Attach ist das Geheimrezept der Partitionierung für Wartungsarbeiten ohne Unterbrechung.

  • DETACH PARTITION CONCURRENTLY zum Entfernen ohne Unterbrechung
  • Ein vorab gesetzter CHECK-Constraint überspringt den Validierungsscan
  • Austauschen, archivieren, Speicherklasse wechseln
  • Mit BEGIN/COMMIT atomar

Kurzer Check

Wie vermeiden Sie den Scan der gesamten Tabelle bei ATTACH PARTITION?

Häufig gestellte Fragen

Ist die Lektion „Partitionen abtrennen und anhängen“ kostenlos?

Ja — der vollständige Text von „Partitionen abtrennen und anhängen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Partitionen abtrennen und anhängen“?

Verwenden Sie ATTACH PARTITION und DETACH PARTITION, um Partitionen einzubinden oder zu entfernen, ohne Lesezugriffe zu blockieren. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Partitionen abtrennen und anhängen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum partitionieren: Pruning und Wartung
  2. Bereichs-, Listen- und Hash-Partitionierung
  3. Partitionen abtrennen und anhängen
  4. Effiziente Abfragen über Partitionen hinweg
← Zurück zu SQL Academy