PostgreSQL Performance- & Parallel-Worker Konfigurator
Berechnen Sie maßgeschneiderte Einstellungen für Ihre postgresql.conf und das darunterliegende
Betriebssystem. Berücksichtigt CPU-Kerne, Arbeitsspeicher, NVMe-Storage und die entscheidenden
Multi-Core Parallel-Worker-Hebel für spürbare Beschleunigung (Faktor 3–5).
🚀 Der Multi-Core Parallel-Worker Hebel
In Standard-Installationen bremst PostgreSQL moderne Mehrkern-Server künstlich aus:
max_parallel_workers_per_gather = 2 bedeutet, dass selbst bei 16 oder 64 verfügbaren Kernen
nur maximal zwei Worker gleichzeitig an einem Tabellenscan arbeiten dürfen.
Erst die gezielte Anhebung von max_worker_processes, max_parallel_workers und
max_parallel_workers_per_gather ermöglicht es der Datenbank, Abfragen über 4 bis 8 Worker
zu parallelisieren – dies bringt den oft beobachteten Faktor 3–5 Geschwindigkeitsgewinn.
⚠️ Die work_mem-Multiplikationsfalle
work_mem wird nicht einmalig pro Verbindung reserviert, sondern
pro Sortier- oder Hash-Knoten im Ausführungsplan und pro parallelem Worker!
Ein Beispiel: Eine Abfrage mit 2 Sorts und 1 Hash-Join, ausgeführt mit 4 parallelen Workern, belegt
bis zu 3 × 5 = 15 × work_mem. Bei 100 gleichzeitigen Verbindungen führt ein unbedacht
gewähltes work_mem = 256MB unvermeidlich zum Eingreifen des Linux OOM-Killers.
💾 HugePages & I/O-Concurrency
Standard-Speicherseiten in Linux sind 4 KB klein. Bei 32 GB shared_buffers muss die CPU
über 8 Millionen Page-Table-Einträge verwalten. Der Wechsel auf 2-MB-HugePages
reduziert diesen Aufwand um den Faktor 512, senkt die TLB-Misses drastisch und stabilisiert
die Latenzen unter Hochlast.
Häufige Fragen zur PostgreSQL-Konfiguration
Warum sind die Standard-Einstellungen von PostgreSQL so defensiv?
PostgreSQL wird so ausgeliefert, dass es selbst auf schwächster Hardware (z. B. 512 MB RAM und 1 CPU-Kern) sofort startet, ohne das System zu überlasten. Für moderne Produktionsserver mit Multi-Core-CPUs, NVMe-SSDs und vielen Gigabyte RAM sind diese Vorgaben jedoch völlig ungeeignet.
Wie übernehme ich die Werte auf meinem Server?
Die Einstellungen für postgresql.conf können in /etc/postgresql/{version}/main/conf.d/99-tuning.conf (Debian/Ubuntu) oder direkt am Ende der postgresql.conf eingefügt werden. Die meisten Werte erfordern einen Neustart (systemctl restart postgresql), insbesondere shared_buffers und max_worker_processes.
Lohnt sich ein Connection Pooler wie PgBouncer?
Ja, absolut. Jede PostgreSQL-Verbindung ist ein eigener Betriebssystem-Prozess, der 5–20 MB Speicher verbraucht und den Kontextwechsel der CPU belastet. Mit PgBouncer genügen oft 20–50 echte Datenbankverbindungen, um Tausende Web-Anfragen latenzarm abzuwickeln.
🎓 Inhouse-Seminar: PostgreSQL Performance-Tuning
Lernen Sie Ausführungspläne lesen, Index-Scans optimieren, Speicherparameter abstimmen und Engpässe systematisch beheben – praxisnah an Ihren eigenen Datenbanken.
🚀 Automatisches Backup: pg-clusterbackup
Sichern Sie alle PostgreSQL-Cluster und -Instanzen auf einem Host automatisch mit parallelen Dumps und Generations-Rotation. Open Source unter MIT-Lizenz.