0Pricing
SQL Academy · Lektion

Warum partitionieren: Pruning und Wartung

Verstehen Sie die Vorteile der Partitionierung: Pruning bei Abfragen, schnelleres VACUUM und einfachere Archivierung.

Warum partitionieren: Pruning und Wartung ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Was ist Partitionierung?

Eine logische Tabelle wird in mehrere physische Tabellen (Partitionen) aufgeteilt, die jeweils eine Teilmenge der Zeilen enthalten. Abfragen durchsuchen nur die relevanten Partitionen.

Warum überhaupt?

Große Tabellen verursachen Probleme:

  • Indizes werden sehr groß, Suchvorgänge langsamer
  • VACUUM dauert Stunden
  • Backups sind langsam
  • Einige Abfragen durchsuchen unnötige Daten

Partitionierung behebt alle vier Probleme.

Partition Pruning

Der Abfrageplaner kann Partitionen ÜBERSPRINGEN, die eine WHERE-Klausel nicht erfüllen können:

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.

Wann Sie partitionieren sollten

Partitionieren Sie, wenn:

  • die Tabelle eine Größe von mindestens 100 GB erreicht
  • ein natürlicher Partitionsschlüssel vorhanden ist (Datum, Mandant, Region)
  • die meisten Abfragen nach diesem Schlüssel filtern
  • alte Daten archiviert oder gelöscht werden können

Wann Sie NICHT partitionieren sollten

Partitionieren Sie nicht nur, weil es interessant klingt:

  • Tabellen mit weniger als einigen GB profitieren nicht davon
  • Wenn Abfragen nicht nach dem Partitionsschlüssel filtern, gibt es KEIN Pruning
  • Der Betriebsaufwand steigt (Verwaltung der Partitionen)

Partitionierungsstrategien

PostgreSQL unterstützt drei Strategien:

  • Range — Partitionen decken Wertebereiche ab (Daten, IDs)
  • List — Partitionen enthalten bestimmte Werte (Länder, Mandanten)
  • Hash — modulares Hashing für eine gleichmäßige Verteilung

Günstiges Löschen

Das Löschen einer Partition erfolgt sofort — es ist kein Löschen Zeile für Zeile erforderlich:

DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.

Einfachere Wartung

VACUUM, REINDEX und ANALYZE arbeiten partitionsweise. Wartungsfenster lassen sich zwischen Partitionen einplanen, statt einen einzigen riesigen Batch zu benötigen.

Kleinere Indizes pro Partition

Jede Partition hat ihre eigenen Indizes. Ein B-Tree auf einer 1-GB-Partition hat weniger Ebenen als einer auf 1 TB — Suchvorgänge sind schneller.

Partitionierung ist ein Werkzeug, kein Allheilmittel

Sie erhalten keine kostenlose Performance — sondern Pruning für Abfragen, die nach dem Partitionsschlüssel filtern, sowie eine einfachere Wartung. Wenn beides nicht zutrifft, erhöhen Sie lediglich die Komplexität.

Native (deklarative) Partitionierung in PostgreSQL

Seit PG 10 verfügbar. Jede Partition ist eine echte Tabelle:

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

Vor PG10: Partitionierung durch Vererbung

Legacy-Systeme verwenden Tabellenvererbung und Trigger. Vermeiden Sie dies bei neuem Code — deklarative Partitionierung ist einfacher und schneller.

Zusammenfassung

Partitionierung eignet sich besonders für große Tabellen, die nach Zeitabschnitten oder Mandanten segmentiert sind.

  • Pruning überspringt irrelevante Partitionen
  • Partitionsweise Wartung ist schneller
  • DROP TABLE ersetzt ein DELETE über 100 GB
  • Kein Allheilmittel — es hilft nur, wenn Abfragen zum Partitionsschlüssel passen

Schnelltest

Sie partitionieren eine Tabelle nach Monaten und führen SELECT * FROM events WHERE country = 'US' ohne Datumsfilter aus. Hilft die Partitionierung?

Häufig gestellte Fragen

Ist die Lektion „Warum partitionieren: Pruning und Wartung“ kostenlos?

Ja — der vollständige Text von „Warum partitionieren: Pruning und Wartung“ 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 „Warum partitionieren: Pruning und Wartung“?

Verstehen Sie die Vorteile der Partitionierung: Pruning bei Abfragen, schnelleres VACUUM und einfachere Archivierung. 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 1 von 4.

Wie lange dauert die Lektion „Warum partitionieren: Pruning und Wartung“?

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