Projekt

Allgemein

Profil

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

Revision 15 ([S] Dominik G, 23.06.2014 11:19) → Revision 16/85 ([S] Dominik G, 24.09.2014 21:18)

h1. Datenbankeinstellungen und Tuning 

 @postgresql.conf@ 

 h2. Linux  

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

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

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

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

 @fsync = off@ 
 @synchronous_commit = off@ 
 @wal_buffers = 8MB@ 
 @checkpoint_segments = 64@ 

 @default_statistics_target = 1000@ 

 @datestyle @date_style = DMY@ 
 @log_destination = 'eventlog'@ (unter Windows) 

 @standard_conforming_strings = OFF@ (siehe #4860) 
 @search_path = '"$user",public,TSystem'@ 


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

 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 



 h2. Virtualisierung 

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