- Inhaltsverzeichnis
- Datenbankeinstellungen und Tuning
Datenbankeinstellungen und Tuning¶
Stand: 28.10.2026. Diese Seite dokumentiert die PRODAT-Vorgaben für PostgreSQL. PRODAT richtet die Konfiguration ein; die Kunden-IT verändert diese nicht eigenständig. Maßgeblich ist die zur installierten PRODAT-Version gehörende PSQL-Fassung. Abweichungen benötigen eine dokumentierte PRODAT-Freigabe.
Hardware, Betrieb und Abnahme: PRODAT Systemanforderungen
Netzwerkzugriff: PostgreSQL Netzwerkkonfiguration (pg_hba.conf). Zertifikate: SSL.
Maßgebliche Funktionen¶
- TSystem.database_settings__set() setzt die PRODAT-Parameter mittels ALTER SYSTEM serverweit für den PostgreSQL-Cluster. Der Aufruf ist eine Konfigurationsänderung und erfolgt durch PRODAT im Rahmen von Einrichtung oder Update, nicht als unverbindlicher Test.
- TSystem.database_settings__validate() prüft wirksame Einstellungen und weitere Datenbankbedingungen. Die gemeldeten Abweichungen sind vor Betriebsfreigabe auszuwerten und zu beheben oder durch PRODAT freizugeben.
Beide Funktionen liegen in 0050 System/010 Functions TSystem.sql. Die Links zeigen den Entwicklungsstand; für eine konkrete Installation ist deren ausgelieferter Quellstand maßgeblich. Referenz des Abgleichs: PSQL Quellstand 6f488d30
Hardwareklassen¶
| Aktive Nutzer | CPU-Kerne / vCPU | RAM mindestens | Konfigurationsklasse |
|---|---|---|---|
| 1–9 | 6 | 16 GB | Klein |
| 10–49 | 12 | 32 GB | Mittel |
| 50–75 | 24 | 48 GB | Mittel |
| 76–200 | 36 | ab 64 GB | Groß |
Hohe Einzelkernleistung hat Vorrang vor möglichst vielen Kernen. Die vorgegebene Kernanzahl ist zusätzlich zu erfüllen. Die Ressourcen gelten für den Datenbankserver ohne RDS-Sitzungen und Fremdanwendungen; Details siehe Systemanforderungen.
| Parameter | Klein | Mittel | Groß |
|---|---|---|---|
| effective_cache_size | 5GB | 10GB | 20GB |
| max_worker_processes | 4 | 6 | 12 |
| max_parallel_workers | 2 | 4 | 8 |
| max_parallel_workers_per_gather | 2 | 4 | 8 |
effective_cache_size ist eine Schätzung für den Abfrageplaner und reserviert keinen Arbeitsspeicher. Die Worker-Werte begrenzen Hintergrund- beziehungsweise Parallel-Worker, nicht die Gesamtzahl normaler Datenbankprozesse. Die Klasse und die tatsächlich wirksamen Werte sind bei Inbetriebnahme zu kontrollieren.
Speicher und datenabhängige Prüfung¶
shared_buffers wird durch PRODAT anhand des Datenbestands festgelegt und in positiven ganzzahligen GB angegeben. Als Ausgangspunkt können etwa 25 % des Server-RAM dienen; entscheidend sind die aktuelle PRODAT-Prüfung und die verbleibende Reserve für Betriebssystem und Abfragen.
Die aktuelle validate-Funktion berechnet einen Prüfwert als gerundete 1,5-fache Gesamtgröße der ausgewählten Tabellen art, auftg, ldsdok, lag, stv, recnokeyword und ab2 einschließlich Indizes und TOAST. Sie prüft die GB-Darstellung sowie, ob shared_buffers mindestens diesen Prüfwert erreicht. Die Funktion setzt shared_buffers nicht selbst. Bei wachsendem Datenbestand sind Einstellung und Server-RAM erneut zu prüfen.
work_mem ist auf 256MB gesetzt. Dieser Betrag kann je Sortier-/Hash-Operation und bei parallelen Abfragen mehrfach anfallen; er ist weder ein fester Verbrauch je Benutzer noch ein Gesamtlimit des Servers. Deshalb RAM-Verbrauch unter typischer gleichzeitiger Last prüfen und höhere Anforderungen durch PRODAT festlegen lassen.
Gemeinsame PRODAT Parameter¶
Die Werte beziehen sich auf den oben genannten Quellstand. Sie ersetzen keine Prüfung der installierten Funktionsfassung.
| Parameter | Wert | Verwendung |
|---|---|---|
| work_mem | 256MB | Abfrage-Arbeitsspeicher pro Operation |
| maintenance_work_mem | 512MB | Wartung und Indexaufbau |
| seq_page_cost | 5 | PRODAT-Planerkosten |
| random_page_cost | 10 | PRODAT-Planerkosten |
| cursor_tuple_fraction | 0.75 | Cursor-Abfrageplanung |
| default_statistics_target | 1000 | Statistikziel |
| checkpoint_timeout | 30min | Checkpoint-Zeitgrenze |
| max_wal_size | 2GB | WAL-Zielgröße, keine harte Speicherobergrenze |
| min_wal_size | 1GB | WAL-Mindestzielgröße |
| vacuum_cost_limit | 1500 | Vacuum-Kostenlimit |
| log_autovacuum_min_duration | 3s | Lang laufende Autovacuum-Vorgänge protokollieren |
| from_collapse_limit / join_collapse_limit | 16 / 16 | Abfrageplanung |
| lock_timeout | 60000 ms | Wartezeit auf Sperren |
| idle_in_transaction_session_timeout | 15min | Inaktive offene Transaktionen begrenzen |
| statement_timeout | 3600000 ms | Standardwert 60 Minuten |
| max_locks_per_transaction | 1024 | Sperrkapazität |
| fsync | on | Wird von validate geprüft |
| synchronous_commit | off | Bestehende PRODAT-Vorgabe; bei Absturz können zuletzt bestätigte Transaktionen verloren gehen |
| lo_compat_privileges | on | PRODAT Large-Object-Kompatibilität |
| lc_messages | en_US.UTF-8 | Englische Meldungen für PRODAT-Auswertung |
| log_destination | eventlog unter Windows | Betriebssystemabhängige Protokollierung |
| search_path | "$user",public,TSystem,prodat_languages,Z_99_Deprecated | PRODAT-Schemareihenfolge |
TLS und weitere Einstellungen¶
Der geprüfte set-Quellstand setzt ssl=on, ssl_cert_file=ssl/pgserver.chain, ssl_key_file=ssl/pgserver.key, ssl_min_protocol_version=TLSv1.2, ssl_max_protocol_version=TLSv1.2 und ssl_prefer_server_ciphers=on. Die Cipher-Liste ist der installierten set-Funktion zu entnehmen. Dies dokumentiert die PRODAT-Konfiguration und ist keine allgemeine Empfehlung, neuere TLS-Versionen dauerhaft auszuschließen. Zertifikate und Vertrauenskette nach SSL einrichten.
Betriebssystemabhängige Optionen, Locale, datestyle, temp_buffers und Logging sind anhand der eingesetzten PostgreSQL-Version und der PRODAT-Installation festzulegen. Frühere pg96-/PostgreSQL-9.3-Pfade und Linux-shmmax-Beispiele sind keine Vorgaben für neue Installationen. Ältere Angaben bleiben über die Seitenhistorie nachvollziehbar.
Konfiguration prüfen und übernehmen¶
Die tatsächlichen Konfigurationspfade mit SHOW config_file; und SHOW data_directory; ermitteln. ALTER SYSTEM schreibt in postgresql.auto.conf; daher ist nicht allein der Inhalt der postgresql.conf maßgeblich.
- Einrichtung durch PRODAT mit der zur Version gehörenden set-Funktion durchführen.
- Konfiguration mit
SELECT pg_reload_conf();neu laden. Parameter mit Neustartbedarf werden erst nach geplantem Dienstneustart wirksam. - In pg_settings die wirksamen Werte, source, sourcefile und pending_restart prüfen; Fehler in pg_file_settings auswerten.
SELECT TSystem.database_settings__validate();ausführen und Meldungen dokumentieren. Einzelne Prüfungen benötigen die entsprechenden Datenbankrechte.- Typische Abläufe unter gleichzeitiger Last prüfen und die Abnahmecheckliste der Systemanforderungen ausfüllen.
Nicht alle Parameter der set-Funktion werden von validate vollständig oder klassenbezogen geprüft. Daher ersetzt eine unauffällige Rückgabe nicht den Abgleich der Hardwareklasse und der wirksamen Einstellungen.
Quellen und weiterführende Hinweise¶
- PostgreSQL Speicher und Worker
- PostgreSQL Abfrageplanung
- PostgreSQL ALTER SYSTEM
- Frühere Hintergrunddokumente: Performance 2009 und Virtualisierung. Diese ersetzen nicht die aktuellen PRODAT-Vorgaben.
Von [X] Daniel S vor 12 Tagen aktualisiert · 88 Revisionen