Projekt

Allgemein

Profil

Aktionen

Datenbankeinstellungen und Tuning (postgresql.conf)

postgresql.conf (PostgreSQL Netzwerkkonfiguration (pg_hba.conf))

Datei-Pfad: ..\PostgreSQL\9.6\data\pg96\postgresql.conf

Prüfen der wichtigsten Postgreseinstellungen mittels Datenbankfunktion

Die Funktionen heißen TSystem.database_settings__initialize() und TSystem.database_settings__validate() und muss bei Neuerungen entsprechend angepasst oder erweitert werden.

Konfiguration PostgreSQL (Beachte Betriebssystem) ab Version 9.3

Beachte Programm-Start-Prüfung PRODAT: #9933
Für ein 16GB RAM System

° param value Bemerkung
shared_buffers (2023) 4GB Daumenregel: ca 1/4 des RAMs den Rest für effective_cache_size. Große Datenbanken mehr! https://distributedsystemsauthority.com/optimizing-postgresql-shared-buffers/ wird ab 2023 geprüft in startroutine siehe code database_settings__validate
ACHTUNG: nur positive ganzzahlige GB angeben!!
temp_buffers 8MB
work_mem (2023) 128MB nicht zu hoch, da je sort bzw. hash Operation, auch mehrfach bei komplexen queries » https://www.citusdata.com/blog/2018/06/12/configuring-work-mem-on-postgres/
https://www.pgmustard.com/blog/work-mem
@alepaes My understanding is that the memory is only allocated as it's used rather than in a big up-front allocation. So effectively the work_mem value is the maximum, while the minimum is always zero.
Bruce Momjian: That is correct.
maintenance_work_mem 512MB für VACUUM, CREATE INDEX, and ALTER TABLE ADD FOREIGN KEY, außerdem für restore dumps
dynamic_shared_memory_type windows
max_worker_processes 8 Default ist 8 (keine Änderung nötig). Je nach Unternehmensgröße mehr
° max_parallel_workers_per_gather 4
fsync on
synchronous_commit off
° max_locks_per_transaction 1024 https://redmine.prodat-sql.de/issues/12311
effective_cache_size 12288MB Beachte, wenn Server nur für PRODAT dann 3/4 des Arbeitsspeichers, wenn auch andere Programme dort laufen dann 1/2 Arbeitsspeicher. Gibt an wieviel RAM-Cache Postgressql erwarten kann, für Indizies usw
default_statistics_target 1000
° seq_page_cost (2023) 2.0 Mache sequentielle Scans "teurer": Der Planer ist eher geneigt, den Index zu nutzen
° random_page_cost (2023) 4.0 ssds vs hdds
° cursor_tuple_fraction (2023) 0.75 (siehe #6436) (Steuert, dass das CURSOR-FETCH (F2-Fenster) anders errechnet wird und es Blöcke früher zurückgibt)
log_destination 'eventlog' (unter Windows)
log_checkpoints off auf Default setzen
checkpoint_timeout 30min https://www.2ndquadrant.com/en/blog/basics-of-tuning-checkpoints/
max_wal_size (2023) 10GB https://www.2ndquadrant.com/en/blog/basics-of-tuning-checkpoints/ https://www.2ndquadrant.com/en/blog/tpc-h-performance-since-postgresql-8-3/
log_line_prefix '<%u@@@%d-%t> '
vacuum_cost_limit (2023) 1500 https://www.2ndquadrant.com/en/blog/autovacuum-tuning-basics/
° log_autovacuum_min_duration 3s # default -1@ (auf Default setzen) > alles was länger 3s dauert loggen und bei Gelegnheit prüfen
search_path '"$user",public,TSystem,prodat_languages,Z_99_Deprecated'
datestyle 'iso, dmy'
standard_conforming_strings off siehe #4860
lc_messages 'en_US.UTF-8' (Das muß sein, da wir die Fehlermeldungen teilweise parsen und somit auf die Fehler-Strings gehen.)
lc_monetary 'German_Germany.1252' (Lokale je nach Land)
lc_numeric 'German_Germany.1252'
lc_time 'German_Germany.1252'

Alte Versionen:

!!! ° = Für einige Werte gibt es Vorgaben und Prüfungen, in den Client-Sessions.
!!! siehe TSystem.database_settings__initialize und TSystem.database_settings__validate (PSQL\0050 System\010 Functions TSystem.sql)

Reload

  • Konfiguration im laufenden Betrieb neu laden.
    • SELECT pg_reload_conf()
    • ..\PostgreSQL\pg96\bin\pg_ctl reload -D ..\PostgreSQL\data\pg96
    • ..\PostgreSQL\13\bin\pg_ctl reload -D ..\PostgreSQL\13\data

Linux

Linux

Könnte durchaus noch weiter getrieben werden, indem man Sie auf die Prodat-DB abstimmt:

Hinweis: Fehler im PgAdmin/Server-Status: ungültige Byte-Sequenz für Kodierung "UTF8" ... durch SELECT pg_file_read('pg_log/... kann ignoriert werden, da wir ja ins eventlog schreiben.
Die Anzeige vom Log hier einfach schließen. Liegt an LC_MESSAGES und mehrsprachigen Systemen, vermutlich ein Bug, Workaround LC_MESSAGES='C' (evtl. nicht mit Prodat kompatibel)

Virtualisierung

Database_Virtualization_PG_China.pdf

Von [X] Jens M vor 3 Monaten aktualisiert · 85 Revisionen