Zum Inhalt springen
Zurück zu: Elasticsearch vs. OpenSearch: Welche Suchengine passt zu Ihrem Projekt?
Datenbanken & Search 8 Min. Lesezeit

PostgreSQL Partitioning: Milliarden Zeilen performant abfragen

Wenn Tabellen auf Milliarden Zeilen wachsen, wird selbst indexiertes Querying langsam. Table Partitioning ist die Lösung, aber nur richtig implementiert.

devRocks Engineering · 26. Februar 2026 · Aktualisiert: 31. März 2026
PostgreSQL Partitioning Performance Datenbank
PostgreSQL Partitioning: Milliarden Zeilen performant abfragen

Wann Partitioning nötig wird

Ab einer bestimmten Tabellengröße werden selbst B-Tree-Indexes ineffizient. VACUUM dauert Stunden, Backups werden zum Problem, und Queries treffen unnötig große Datenmengen. Partitioning teilt eine große Tabelle in kleinere, verwaltbare Teile.

Partitioning-Strategien

  • Range Partitioning: Ideal für Zeitreihen-Daten. Partitionieren Sie nach Monat oder Quartal, Queries, die einen Zeitraum abfragen, scannen nur relevante Partitionen.
  • List Partitioning: Für kategorische Daten wie Region, Mandant oder Status. Jede Partition enthält Zeilen mit bestimmten Werten.
  • Hash Partitioning: Gleichmäßige Verteilung über eine feste Anzahl Partitionen, gut für Write-heavy Workloads ohne natürlichen Partitionsschlüssel.

Best Practices

  • Partition Key im Query: Queries müssen den Partition Key in der WHERE-Klausel enthalten, damit Partition Pruning greift.
  • Nicht zu viele Partitionen: Hunderte Partitionen verlangsamen den Query Planner. 12-36 aktive Partitionen sind ein guter Richtwert.
  • Automatische Partition-Erstellung: Nutzen Sie pg_partman für automatische Erstellung und Verwaltung von Zeitreihen-Partitionen.
  • Indexes pro Partition: Jede Partition hat eigene Indexes, das hält Index-Maintenance schnell.

Ergebnis

In einem E-Commerce-Projekt haben wir eine 2.4-Milliarden-Zeilen Order-Tabelle mit Range Partitioning nach Monat aufgeteilt. Die durchschnittliche Query-Zeit sank von 12 Sekunden auf 80 Millisekunden, ein Faktor 150x.

Fragen zu diesem Thema?

Wir beraten Sie gerne zu den in diesem Artikel beschriebenen Technologien und Lösungen.

Kontakt aufnehmen

Seit über 25 Jahren realisieren wir Engineering-Projekte für Mittelstand und Enterprise.

Weitere Artikel aus „Datenbanken & Search“

Häufig gestellte Fragen

PostgreSQL Partitioning unterteilt große Tabellen in kleinere, besser verwaltbare Teile. Es wird notwendig, wenn Tabellen so groß werden, dass Indexe ineffizient werden, VACUUM lange dauert oder Backups problematisch werden.
Es gibt drei Hauptstrategien: Range Partitioning für Zeitreihen-Daten, List Partitioning für kategorische Daten und Hash Partitioning für gleichmäßige Verteilung bei Write-heavy Workloads. Die Wahl der Strategie hängt von der Natur der Daten und den spezifischen Abfrageanforderungen ab.
Wichtige Best Practices umfassen, den Partition Key in der WHERE-Klausel zu verwenden, die Anzahl der Partitionen im Rahmen von 12-36 zu halten und automatische Partitionserstellung mit Tools wie pg_partman zu nutzen. Auch sollte jede Partition ihre eigenen Indexe haben, um die Wartung schnell zu halten.
Durch Partitioning werden nur relevante Datenpartitionen in Abfragen berücksichtigt, was die Performance erheblich steigert. In einem Beispiel konnte die durchschnittliche Query-Zeit von 12 Sekunden auf 80 Millisekunden reduziert werden, was eine Verbesserung um den Faktor 150 darstellt.
Zu viele Partitionen können den Query Planner verlangsamen, was die Performance der Abfragen negativ beeinflusst. Es ist ratsam, die Anzahl aktiver Partitionen in einem vernünftigen Rahmen zu halten, um Effizienzverluste zu vermeiden.

Keine Antwort gefunden?

Sprechen Sie uns an