01 Februar 2026

Wie optimiert man PostgreSQL Memory-Einstellungen für bessere Performance?

Die Optimierung der Memory-Einstellungen in PostgreSQL ist entscheidend für eine optimale Datenbankperformance. Die wichtigsten Parameter wie shared_buffers, work_mem und maintenance_work_mem bestimmen, wie effizient PostgreSQL den verfügbaren Arbeitsspeicher nutzt. Eine korrekte Konfiguration kann die Abfragegeschwindigkeit erheblich verbessern und Systemengpässe vermeiden.

Was sind die wichtigsten PostgreSQL-Memory-Parameter für die Performance?

Die vier entscheidenden Memory-Parameter für PostgreSQL sind shared_buffers, work_mem, maintenance_work_mem und effective_cache_size. Diese Parameter steuern, wie PostgreSQL den Arbeitsspeicher für verschiedene Operationen verwaltet, und haben direkten Einfluss auf die Datenbankperformance.

Der Parameter shared_buffers definiert den Speicherbereich, den PostgreSQL für das Caching von Datenseiten verwendet. Dieser Puffer wird von allen Datenbankprozessen gemeinsam genutzt und sollte typischerweise 25 % des verfügbaren RAM betragen.

Work_mem bestimmt den maximalen Arbeitsspeicher für einzelne Abfrageoperationen wie Sortierungen und Hash-Joins. Da mehrere Operationen gleichzeitig stattfinden können, multipliziert sich dieser Wert entsprechend der aktiven Verbindungen.

Maintenance_work_mem wird für Wartungsoperationen wie VACUUM, CREATE INDEX und ALTER TABLE verwendet. Dieser Parameter kann deutlich höher als work_mem gesetzt werden, da Wartungsoperationen seltener und meist einzeln ausgeführt werden.

Effective_cache_size informiert den Query Planner über die Größe des verfügbaren Dateisystem-Caches und hilft bei der Optimierung von Abfrageplänen.

Wie berechnet man die optimalen shared_buffers-Werte für PostgreSQL?

Für shared_buffers sollten Sie 25 % des verfügbaren RAM als Ausgangspunkt verwenden. Bei einem System mit 8 GB RAM wären das etwa 2 GB für shared_buffers. Diese Faustregel funktioniert für die meisten Standard-Workloads effektiv.

Die optimale Einstellung hängt von mehreren Faktoren ab. Bei dedizierten Datenbankservern können Sie bis zu 40 % des RAM verwenden, während bei gemischten Systemen 15–25 % angemessener sind. Sehr kleine Systeme unter 1 GB RAM sollten mindestens 128 MB für shared_buffers reservieren.

Testen Sie verschiedene Werte systematisch und überwachen Sie die Performance-Metriken. Beginnen Sie mit der 25-%-Regel und erhöhen Sie schrittweise, während Sie die Auswirkungen auf Cache-Hit-Ratio und Abfragezeiten beobachten.

Beachten Sie, dass zu hohe shared_buffers-Werte kontraproduktiv sein können, da PostgreSQL dann mit dem Betriebssystem-Cache konkurriert. Die optimale Balance nutzt sowohl PostgreSQL-interne Puffer als auch den OS-Cache effizient.

Warum ist work_mem so wichtig für PostgreSQL-Abfragen?

Work_mem steuert den verfügbaren Arbeitsspeicher für einzelne Abfrageoperationen und beeinflusst direkt, ob Sortierungen und Joins im Speicher oder auf der Festplatte stattfinden. Operationen im Arbeitsspeicher sind deutlich schneller als Festplattenzugriffe.

Wenn work_mem zu klein ist, müssen komplexe Abfragen temporäre Dateien auf der Festplatte erstellen. Dies führt zu erheblichen Performance-Einbußen, besonders bei Sort-Operationen, Hash-Joins und Window Functions.

Die Herausforderung liegt darin, dass work_mem pro Operation und pro Verbindung gilt. Bei 100 gleichzeitigen Verbindungen mit jeweils zwei Sortieroperationen können theoretisch 200 × work_mem gleichzeitig verwendet werden.

Eine bewährte Strategie ist, work_mem konservativ zu setzen (4–16 MB) und für spezielle Abfragen temporär zu erhöhen. Verwenden Sie SET work_mem = '256MB' vor ressourcenintensiven Operationen und setzen Sie den Wert danach zurück.

Überwachen Sie die PostgreSQL-Logs auf „temporary file“-Meldungen, die anzeigen, wann work_mem nicht ausreicht. Diese Informationen helfen bei der Anpassung des Parameters.

Welche Memory-Einstellungen sollte man bei unterschiedlichen Servergrößen verwenden?

Die Memory-Konfiguration variiert erheblich je nach verfügbarem RAM und Einsatzzweck. Kleine Server benötigen andere Einstellungen als High-Performance-Systeme, um optimal zu funktionieren.

Kleine Systeme (1–4 GB RAM):

  • shared_buffers: 256 MB – 1 GB
  • work_mem: 4 MB – 8 MB
  • maintenance_work_mem: 64 MB – 256 MB
  • effective_cache_size: 75 % des verfügbaren RAM

Mittlere Systeme (8–32 GB RAM):

  • shared_buffers: 2 GB – 8 GB
  • work_mem: 8 MB – 32 MB
  • maintenance_work_mem: 512 MB – 2 GB
  • effective_cache_size: 75 % des verfügbaren RAM

Große Systeme (64 GB+ RAM):

  • shared_buffers: 16 GB – 25 GB
  • work_mem: 32 MB – 128 MB
  • maintenance_work_mem: 2 GB – 8 GB
  • effective_cache_size: 75 % des verfügbaren RAM

Berücksichtigen Sie dabei immer die spezifischen Anforderungen Ihrer Anwendung und die Anzahl der gleichzeitigen Verbindungen.

Wie überwacht man Memory Usage und identifiziert Optimierungspotenzial?

Die Überwachung der Speichernutzung erfolgt durch eine Kombination aus PostgreSQL-internen Statistiken und System-Monitoring-Tools. Verwenden Sie pg_stat_database für Cache-Hit-Ratios und Systemtools für die RAM-Auslastung.

Wichtige Metriken zur Überwachung umfassen die shared_buffers-Hit-Ratio (sie sollte über 95 % liegen), die Anzahl temporärer Dateien und die Swap-Nutzung des Systems. Diese Werte zeigen, ob Ihre Memory-Konfiguration optimal ist.

Nutzen Sie diese SQL-Abfrage für Cache-Statistiken:

SELECT datname, blks_hit, blks_read, round((blks_hit::float/(blks_hit+blks_read))*100,2) AS hit_ratio FROM pg_stat_database WHERE datname IS NOT NULL;

Überwachen Sie die PostgreSQL-Logs regelmäßig auf „temporary file“-Einträge, die auf unzureichendes work_mem hinweisen. Tools wie pg_stat_statements zeigen die ressourcenintensivsten Abfragen.

Systemseitige Überwachung mit htop, iotop oder speziellen Monitoring-Lösungen hilft dabei, die Gesamtsystem-Performance im Kontext der Datenbanknutzung zu verstehen.

Wie credativ® bei der PostgreSQL-Memory-Optimierung hilft

credativ® bietet umfassende PostgreSQL-Performance-Optimierung mit Fokus auf Memory-Tuning und Konfigurationsanalyse. Unsere Spezialisten analysieren Ihre spezifische Umgebung und entwickeln maßgeschneiderte Memory-Strategien für eine optimale Datenbankperformance.

Unsere Dienstleistungen umfassen:

  • Detaillierte Memory-Analyse und Performance-Assessment Ihrer PostgreSQL-Installation
  • Maßgeschneiderte Konfigurationsempfehlungen basierend auf Ihrem Workload
  • Implementierung und Testing optimierter Memory-Parameter
  • Kontinuierliches Monitoring und proaktive Optimierung
  • 24/7-Support bei Performance-Problemen und Memory-bezogenen Issues
  • Schulungen für Ihr Team zum PostgreSQL-Memory-Management

Profitieren Sie von unserem langjährigen PostgreSQL-Know-how und lassen Sie sich von unseren Experten bei der Optimierung Ihrer Datenbankperformance unterstützen. Kontaktieren Sie uns für eine kostenlose Erstberatung zu Ihrer PostgreSQL-Memory-Konfiguration.

Ähnliche Beiträge

Kategorien: credativ® Inside

über den Autor

Peter Dreuw

Head of Sales & Marketing

zur Person

Peter Dreuw arbeitet seit 2016 für die credativ GmbH und ist seit 2017 Teamleiter. Seit 2021 ist er Teil des Management-Teams als VP Services der Instaclustr. Mit der Übernahme durch die NetApp wurde seine neue Rolle "Senior Manager Open Source Professional Services". Im Rahmen der Ausgründung wurde er Mitglied der Geschäftsleitung als Prokurist. Sein Aufgabenfeld ist die Leitung des Vertriebs und des Marketings. Er ist Linux-Nutzer der ersten Stunden und betreibt Linux-Systeme seit Kernel 0.97. Trotz umfangreicher Erfahrung im operativen Bereich ist er leidenschaftlicher Softwareentwickler und kennt sich auch mit hardwarenahen Systemen gut aus.

Beiträge ansehen


Beitrag teilen: