Projekt

Allgemein

Profil

710 Datenbankeinstellungen und Tuning (postgresql conf) » Historie » Revision 40

Revision 39 ([X] Daniel S, 28.05.2018 18:24) → Revision 40/85 ([X] Daniel S, 28.05.2018 18:53)

h1. Datenbankeinstellungen und Tuning 


 @postgresql.conf@ ([[PostgreSQL Netzwerkkonfiguration (pg_hba.conf)]]) 

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

 h2. Konfiguration PostgreSQL (Beachte Betriebssystem) ab Version 9.3  

 @shared_buffers = 1024MB@ 
 @temp_buffers = 8MB@ 
 @work_mem = 16MB@ (nicht zu hoch, da je sort bzw. hash Operation, auch mehrfach bei komplexen queries) 
 @maintenance_work_mem = 512MB@ (für VACUUM, CREATE INDEX, and ALTER TABLE ADD FOREIGN KEY, außerdem für restore dumps) 

 @fsync = off@ 
 @synchronous_commit = off@ 
 @wal_buffers = -1@      (bis 9.3 8MB) 
 @checkpoint_segments = 64@  
 @max_wal_size = 3GB@       (ab 9.6 Ersatz für checkpoint_segments3 * checkpoint_segments) * 16MB ) 

 @effective_cache_size = 2048MB@ (Beachte 1/2 Arbeitsspeicher) 

 @default_statistics_target = 1000@ 

 @cursor_tuple_fraction = 0.75@ (siehe #6436) 

 @max_worker_processes = 16@ > Default ist 8. Je nach Unternehmensgröße mehr 
 @max_parallel_workers_per_gather = 4@ 

 @log_destination = 'eventlog'@ (unter Windows) 

 @search_path = '"$user",public,TSystem'@ 

 @datestyle = 'iso, dmy'@ 

 @standard_conforming_strings = off@ (siehe #4860) 

 @lc_messages = 'en_US.UTF-8'@ @lc_messages@ > setzen wir hart von prodat aus auf englisch @'en_US.UTF-8' ('German_Germany.1252' )@ > das muß sein, da wir die Fehlermeldungen teilweise parsen und somit natürlich auf die fehler-strings gehen. 

 @log_line_prefix = '<%u@@@%d-%t> '@ 

 @lc_?@ 



 -Bis Prodat 11.5.3 @statement_timeout=120000@- 

 h2. Linux  

 {{collapse(Linux) 

 h3. Betriebssystem - Speichereinstellungen mind. 3GiB Arbeitsspeicher! 

 * standard: 
 sysctl kernel.shmmax 
 kernel.shmmax = 33554432 

 * umsetzen auf 280437720 (256MB, Mindestens, LOLL steht auf 1024MB (8GB Ram)) (On Windows the useful range is 64MB to 512MB) 
 /etc/sysctl.conf    -> zeile aufnehmen: kernel.shmmax=280437720 
 reboot 

 h3. Nur auf Systemen mit 3GiB+ RAM anzuwenden 

 @$ free -m@ 
 <pre> 
              total         used         free       shared      buffers       cached 
 Mem:            3018         1516         1501            0          208         1113 
 -/+ buffers/cache:          194         2823 
 Swap:           1023            0         1023 
 </pre> 


 h3. Weiteres 

 Unter Linux ist noch die shmmax-Option aus der 99-postgresql.conf via sysctl zu setzen, sonst klappert das da. 
 http://www.postgresql.org/docs/8.2/static/kernel-resources.html 

 }} 


 Könnte durchaus noch weiter getrieben werden, indem man Sie auf die Prodat-DB abstimmt: 
 * http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server 
 * http://www.postgresql.org/docs/current/static/performance-tips.html 
 * "five_steps_perform_2009.pdf":http://www.prodat-sql.de/redmine/attachments/download/2528/five_steps_perform_2009.pdf Dokument über Einstellungen etc 


 *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) 


 h2. Virtualisierung 

 "Database_Virtualization_PG_China.pdf":http://www.prodat-sql.de/redmine/attachments/download/2568/Database_Virtualization_PG_China.pdf