| Kategorien: | credativ® Inside |
|---|
Die richtige Dimensionierung eines PostgreSQL®-Servers ist eine der wichtigsten Entscheidungen, die Sie vor dem Produktivbetrieb treffen. Wer zu knapp kalkuliert, riskiert Performance-Engpässe unter Last. Wer überdimensioniert, verschwendet Budget und Ressourcen. Dieser Leitfaden führt Sie Schritt für Schritt durch den gesamten Planungsprozess: von der Workload-Analyse über die Hardware-Auswahl bis zur Validierung im laufenden Betrieb.
Das Ziel ist ein PostgreSQL-Server, der Ihre produktiven Workloads stabil, performant und skalierbar bewältigt. Die hier beschriebenen Schritte gelten sowohl für On-Premises-Umgebungen als auch für Cloud-Instanzen und lassen sich unabhängig von der Unternehmensgröße anwenden.
Bevor Sie auch nur eine einzige Konfigurationszeile schreiben, müssen Sie Ihren Workload verstehen. PostgreSQL Server Sizing ohne Workload-Analyse ist Raten, kein Planen. Sammeln Sie zunächst alle relevanten Informationen über die geplante oder bestehende Datenbanknutzung.
Wenn Sie eine Migrationssituation haben und bereits eine bestehende Datenbank betreiben, nutzen Sie Monitoring-Daten aus dem Altsystem als Ausgangsbasis. Werkzeuge wie pg_stat_statements, pg_stat_bgwriter und externe Monitoring-Lösungen liefern belastbare Kennzahlen. Liegt noch keine Datenbasis vor, orientieren Sie sich an vergleichbaren Projekten und planen Sie einen Sicherheitspuffer von mindestens 30 Prozent ein.
Kalkulieren Sie die CPU-Kapazität auf Basis der gleichzeitigen Abfragen und deren Komplexität. PostgreSQL nutzt für jede Verbindung einen eigenen Prozess, was bedeutet: Parallele Abfragen beanspruchen direkt mehrere CPU-Kerne.
max_parallel_workers_per_gather steuern Sie, wie viele Kerne eine einzelne Abfrage nutzen darf.Nach der CPU-Planung prüfen Sie, ob Ihre Schätzung mit dem erwarteten Verbindungsmodell übereinstimmt. Wenn Sie einen Connection Pooler wie PgBouncer einsetzen, können Sie die tatsächliche Prozessanzahl deutlich reduzieren und die CPU-Last gleichmäßiger verteilen. Das ist besonders bei Anwendungen mit vielen kurzlebigen Verbindungen empfehlenswert.
Arbeitsspeicher ist einer der wichtigsten Hebel für die PostgreSQL-Performance. Der Parameter shared_buffers definiert, wie viel RAM PostgreSQL direkt für den Daten-Cache nutzt. Darüber hinaus spielen aber weitere Speicherbereiche eine entscheidende Rolle.
shared_buffers auf etwa 25 Prozent des gesamten verfügbaren RAM. Bei einem Server mit 64 GB RAM wären das 16 GB. Dieser Richtwert gilt für dedizierte Datenbankserver.effective_cache_size teilt dem Query-Planer mit, wie viel Speicher insgesamt für Caching zur Verfügung steht. Setzen Sie diesen Wert auf 50 bis 75 Prozent des Gesamt-RAMs.work_mem sorgfältig: Dieser Speicher wird pro Sortier- oder Hash-Operation pro Verbindung reserviert. Bei 100 gleichzeitigen Verbindungen und 4 MB work_mem können das schnell 400 MB oder mehr sein. Beginnen Sie konservativ mit 4 bis 16 MB und erhöhen Sie den Wert gezielt für analytische Workloads.maintenance_work_mem (genutzt für VACUUM, CREATE INDEX) einen höheren Wert, zum Beispiel 256 MB bis 1 GB, da diese Operationen nicht gleichzeitig in großer Zahl ausgeführt werden.Nach der Konfiguration dieser Parameter beobachten Sie im Betrieb, ob die Cache-Hit-Ratio bei pg_stat_bgwriter und pg_statio_user_tables über 95 Prozent liegt. Liegt sie darunter, ist Ihr Arbeitsspeicher für den Workload möglicherweise zu knapp bemessen.
Speicher ist häufig der kritischste Engpass bei produktiven PostgreSQL-Workloads. Die Wahl des richtigen Storage-Setups beeinflusst Latenz, Durchsatz und Zuverlässigkeit unmittelbar.
PGDATA) und die Write-Ahead-Log-Dateien (WAL) auf separate physische Laufwerke oder zumindest auf separate Volumes. Das WAL-Schreiben ist sequenziell und profitiert von einer eigenen I/O-Lane.atime-Updates mit der Mount-Option noatime, um unnötige Schreiboperationen zu vermeiden.Zur Validierung messen Sie die I/O-Leistung mit Werkzeugen wie fio oder iostat, bevor Sie PostgreSQL in Betrieb nehmen. So erkennen Sie Storage-Engpässe, bevor sie im Produktivbetrieb auftreten. Informieren Sie sich auch über PostgreSQL-LTS-Optionen für langfristig stabile Betriebsumgebungen.
Passen Sie nach der Hardware-Planung die PostgreSQL-Konfiguration gezielt an Ihre Ressourcen an. Die Standardwerte in postgresql.conf sind bewusst konservativ gewählt und für Produktionssysteme in der Regel ungeeignet.
max_connections auf einen realistischen Wert. Mehr Verbindungen bedeuten mehr Speicherverbrauch und mehr CPU-Last durch Prozessverwaltung. Nutzen Sie einen Connection Pooler, um die tatsächliche Verbindungszahl niedrig zu halten.checkpoint_completion_target auf 0.9, damit Checkpoints gleichmäßiger über die Zeit verteilt werden und keine I/O-Spitzen entstehen.wal_buffers an, typischerweise auf 16 MB für schreibintensive Systeme.random_page_cost auf 1.1 ein, wenn Sie SSDs verwenden. Der Standardwert von 4.0 ist für mechanische Festplatten ausgelegt und führt auf SSDs zu suboptimalen Query-Plänen.autovacuum und passen Sie dessen Parameter an Ihre Schreiblast an. Ein zu seltenes VACUUM führt zu Tabellenblähung und Performance-Degradation.Nutzen Sie nach der initialen Konfiguration Werkzeuge wie pgtune als Ausgangspunkt für Ihre Parameterwahl. Diese Tools generieren auf Basis von RAM, CPU-Anzahl und Workload-Typ eine solide Ausgangskonfiguration, die Sie anschließend gezielt verfeinern. Einen guten Überblick über unterstützte PostgreSQL-Dienstleistungen finden Sie in unserem Kompetenz-Center.
Die Dimensionierung eines PostgreSQL-Servers endet nicht mit dem initialen Aufsetzen. Validieren Sie die Performance unter realistischer Last und passen Sie die Konfiguration iterativ an. Kein Sizing-Plan überlebt den ersten Kontakt mit dem echten Workload unverändert.
pgbench ermöglichen reproduzierbare Benchmarks für OLTP-Szenarien.pg_stat_statements und analysieren Sie nach dem Lasttest, welche Abfragen die meiste Zeit beanspruchen. Konzentrieren Sie Optimierungsmaßnahmen auf die teuersten Abfragen.top, iostat und vmstat. Identifizieren Sie, ob CPU, RAM oder I/O der limitierende Faktor ist.log_min_duration_statement und setzen Sie einen Schwellenwert, der zu Ihrem Workload passt.Planen Sie außerdem regelmäßige Reviews der Performance-Kennzahlen im laufenden Betrieb ein. Datenbankgröße, Abfragemuster und Verbindungsanzahl verändern sich über die Zeit. Was heute gut dimensioniert ist, kann in sechs Monaten bereits an Grenzen stoßen. Ein strukturiertes Monitoring, das Trends frühzeitig sichtbar macht, ist daher kein optionales Extra, sondern ein fester Bestandteil des Datenbankbetriebs.
Die Dimensionierung eines produktiven PostgreSQL-Servers erfordert tiefes technisches Know-how, Erfahrung mit realen Workloads und ein gutes Gespür für die Wechselwirkungen zwischen Hardware, Betriebssystem und Datenbankparametern. Genau hier setzen wir an. Als PostgreSQL® Competence Center begleiten wir Unternehmen durch den gesamten Lebenszyklus ihrer PostgreSQL-Umgebungen.
Unser Leistungsangebot im Bereich PostgreSQL Server Sizing und Betrieb umfasst:
Ob Sie einen Neuaufbau planen, eine bestehende Umgebung optimieren oder eine Migration durchführen möchten: Wir stehen Ihnen mit unserem Support-Angebot zur Seite. Kontaktieren Sie uns und sprechen Sie mit unseren PostgreSQL-Spezialisten über Ihr Vorhaben.
PostgreSQL® ist eine Marke der PostgreSQL Community Association of Canada. credativ® ist Competence Center für PostgreSQL®. Die Nennung dient ausschließlich der sachlichen Beschreibung von Dienstleistungen von credativ®. Es besteht keine geschäftliche Verbindung zu den genannten Markeninhabern.
| Kategorien: | credativ® Inside |
|---|
über den Autor
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.
Sie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Brevo. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von Turnstile laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Turnstile. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen