Projekt

Allgemein

Profil

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

Revision 19 ([S] Dominik G, 17.09.2015 13:06) → Revision 20/85 ([S] Dominik G, 17.09.2015 13:10)

h1. Datenbankeinstellungen und Tuning 

 @postgresql.conf@ 

 h2. 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 


 h2. Konfiguration PostgreSQL (Beachte Betriebssystem) 

 @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 = 8MB@ (@-1@ ab 9.3 "-1 sets based on shared_buffers") 
 @checkpoint_segments = 64@ 

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

 @default_statistics_target = 1000@ 

 @cursor_tuple_fraction = 0.75@ (siehe #6436) 

 @log_destination = 'eventlog'@ (unter Windows) 

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

 @datestyle = 'iso, dmy'@ 

 @standard_conforming_strings = off@ (siehe #4860) 


 Bis Prodat 11.5.3 @statement_timeout=120000@ 


 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