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
- Warum partitionieren: Pruning und Wartung
- Bereichs-, Listen- und Hash-Partitionierung
- Partitionen abtrennen und anhängen
- Effiziente Abfragen über Partitionen hinweg