SlideShare a Scribd company logo
TUNING




             TUNING – Ottimizzazione risorse interne


27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                            page 1
Postgresql.conf


  Il file postgresql.con è il file con cui si 
  gestiscono la maggior parte delle configurazioni
  Circa 200 configurazioni in totale
  Possono essere raggruppate in 10 categorie
  Analazzeremo le principali caratteristiche del 
  file postgresql.conf 




27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                            page 2
Postgresql.conf

   File Locations
   Connections and Authentication
   Resource Usage
   WAL and Checkpoints
   Query Tuning
   Error and Reporting and Logging
   Statistics
   Locale & Formatting
   Lock Management
   Maintenance

27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                            page 3
File locations

   data_directory(string) :  è la directory usata per lo storage dei 
   dati.



   hba_file (string) : speficica il path verso il file pg_hba.conf 



   ident_file (string) : specifica il path verso il file pg_ident.conf



   external_pid_file (string) :   crea una ulteriore copia del process 
   ID. Può essere utilizzata dai tools di amministrazione che hanno 
   bisogno di una copia del process ID.




 27/11/08    /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                              page 4
Connections and Authentication
   listen_addresses (string) : specifica gli indirizzi ip sui quali il server 
   si  aspetta  le  connessione  dal  client.  '*'  imposta in  ingresso  qualsiasi 
   rete  → da impostare solo su macchine di sviluppo.



   port  (integer)  :  imposta  la  porta  TCP  sulla  quale  postgresql  è  in 
   ascolto.



   max_connections  (integer)  :  imposta  il  numero  massimo  delle 
   connessioni che postgresql può essere in grado di accettare. 



   superuser_reserved_connections (integer) : imposta il numero di 
   connessioni riservate all'utente  PostgreSQL superuser.




 27/11/08    /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                              page 5
max_connections
                                            Il numero massimo al momento 
                                            dell'installazione  viene  stabilito 
                                            dal comando initdb in base alle 
                                            possibilità  che  il  volstro  kernel 
                                            offre.

                                            All'aumentare  del  numero  max 
                                            di  connessioni  aumenta  il 
                                            numero  di  risorse  di  sistema 
                                            utilizzate.

                                            Qualora        il            vostro 
                                            max_connection sia >= 1000 si 
                                            consigli   di      utilizza     un 
                                            programma  di  pool  delle 
                                            connessioni.

                                       Qualora  il  vostro  sistema  non 
                                       supporti  dei  valori  di  default 
                                       molto  bassi    è  necessario 
                                       ritoccare  qualcosa  a  livello  di 
 http://developer.postgresql.org/pgdocs/postgres/kernel­resources.html
                                       kernel di macchina.
27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                            page 6
Connections and Authentication

    bonjour_name (string) : imposta il messaggio di broadcast.



    authentication_timeout (integer) : imposta in secondi il tempo 
    massimo richiesto al client per completare la propria autenticazione



    Ssl (boolean) : Abilita le connessioni ssl.



    password_encryption (boolean) :  Quando viene creato un utente 
    in SQL attraverso CREATE USER o ALTER USER senza passare il 
    parametro ENCRIPTED o UNENCRYPTED, questo parametro 
    determina se la password deve essere criptata o no.




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 7
Un po' di internals

                                                 Considerazioni sulla 
                                                 perfomance


                                                      Ottimizzare l'utilizzo 
                                                      delle risorse del sistema 
                                                      (CPU, Memoria, Dischi)


                                                      Ottimizzare le queries 
                                                      inviate al database: 
                                                           CREATE INDEX
                                                           VACUUM
                                                           CLUSTER
                                                           EXPLAIN 


 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 8
Un po' di internals

                                                  In questa sede 
                                                  parleremo di come 
                                                  ottimizzare le risorse 
                                                  del server DBMS, 
                                                  vediamo ora i livelli di 
                                                  memoria:
                                                       Registri cpu
                                                       Cache cpu
                                                       Kernel cache (RAM)
                                                       Dischi




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 9
Un po' di internals


                                                 All'aumentare del 
                                                 prezzo diminuisce la 
                                                 capacità della 
                                                 memoria. Tipicamente:


                                                      Registri cpu : bytes
                                                      Cache cpu : Kb / Mb
                                                      RAM : Mb/Gb
                                                      Dischi : Gb/Tb




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 10
Un po' di internals



                                           Il  passaggio  di  dati  tra  i  vari 
                                           stadi  della  memoria  avviene 
                                           costantemente  in  un  server,  lo 
                                           swap  tra  i  registri  CPU  e  la 
                                           cache  di  CPU  non  possono 
                                           essere  gestiti  dal  DBA,  mentre 
                                           invece  è  possibile  il  tuning  tra 
                                           RAM e dischi.




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 11
Un po' di internals

                                                 Un server PostgreSQL 
                                                 possiede:
                                                      Programmi in 
                                                      esecuzione
                                                      Dati e stack
                                                      Shared buffer cache
                                                      Kernel disk buffer cache
                                                      kernel




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 12
Un po' di internals – Shared Buffer Cache

      PostgreSQL  non  cambia  direttamente  le 
      informazioni  su  un  disco  ma  le  scrive  sullo  shared 
      buffer cache le informazioni vengono prelevate:
            Dal disk buffer cache
            Direttamente dal disco




      I  processi  di  backend  accedono  allo  shared_buffer 
      e se ad esempio bisogna effettuare un processo di 
      lettura allora la lettura avviene tutta in RAM. 




 27/11/08     /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                               page 13
Un po' di internals – Shared Buffer Cache




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 14
Un po' di internals – Shared Buffer Cache




COME DEVE ESSERE DIMENSIONATO LO SHARED BUFFER?




 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 15
Un po' di internals – Shared Buffer Cache
       Lo shared buffer deve avere la giusta dimensione 
       per consentire agli altri programmi di girare senza 
       intoppi.
       Se lo shared buffer è troppo grande, allora il 
       sistema operativo inizierà il processo di swap per 
       richiedere memoria per gli altri programmi in 
       esecuzione




                           RALLENTAMENTO



 27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 16
Un po' di internals – Shared Buffer Cache

       Altro parametro importante: work_mem
            Specifica l'insieme totale di memoria non shared 
            RAM  usata per le operazioni interne di ordinamento 
            e tabelle di hash prima di passarle ai file 
            temporanei.




 27/11/08    /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                              page 17
Resource Usage ­ Memory

  shared_buffers (integer) : imposta la quantità totale di 
  memoria usata dai buffers della shared memory.
       E' una quantità di memoria definita come una RAM dedicata per 
       Postgresql, usata per il controllo delle connessioni, esecuzione di 
       operazioni e altro.
       Postgresql necessita anche di RAM per la gestione dei buffer file 
       system, ordinamento etc.. per cui shared_buffers non può essere 
       maggiore della RAM di sistema.
       32 Mb di default
       Deve essere almeno 128 Kb e almeno 16K*max_connections
       > 2Gb supportata solo per sistemi a 64 bits
       Incrementare shared_buffers → aumentare molto probabilmente 
       alcuni parametri del KERNEL SHMMAX e SHMALL.
       http://www.postgresql.org/docs/current/static/kernel­
       resources.html
27/11/08   /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                            page 18
Resource Usage ­ Memory

   work_mem (integer) : Specifica l'insieme totale di 
   memoria non shared RAM  usata per le operazioni 
   interne di ordinamento e tabelle di hash prima di 
   passarle ai file temporanei.
           Per una query complessa con ORDER BY, DISTINCT, MERGE 
           JOINS in parallelo, è possibile che si superi il valore work_mem 
           prima che il sistema inizi a depositare I dati su files temporanei 
           cosicchè la quantità di memoria utilizzata potrebbe essere di 
           molte volte superiore la work_mem.
           Questo limite ha il compito di non far andare andare il server in 
           swap.
           La work_mem è allocata per multipli di potenze di 2
           Il suo valore di default è 1Mb



27/11/08      /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                               page 19
Tunning


      Come impostare il giusto valore?  (B. Momjian)
           Per impostare il giusto valore conviene iniziare con il 25% 
           della RAM totale per quanto riguarda lo shared_buffer e 
           con il 2% ­  4%  della RAM totale per quanto riguarda la 
           work_mem.
           Aumentare i valori se il sistema non va in swap
           Diminuire i valori se il sistema va in swap. 




27/11/08    /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 20
Resource Usage ­ Memory

     temp_buffers (integer) : Imposta il numero 
     massimo di buffers temporanei usati per ogni 
     sessione del database.
           Una sessione può allocare buffer temporanei come da lei 
           richiesto fino alla quantità massima indicata da 
           temp_buffers.
           Il valore di default può essere aumentato se la vostra 
           applicazione usa pesantemente temporary tables.
           Default 8Mb




27/11/08     /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                              page 21
Resource Usage ­ Memory

   max_prepared_transactions (integer) : Imposta il 
   massimo numero di transaction che possono essere 
   simultaneamente nello stato “prepared”. 
           Vedi PREPARED TRANSACTION
           Il valore 0 disabilità questa feature : se l'applicazione non usa 
           PREPARED TRANSACTION si può tranquillamente disabilitare
           Qualora si utilizzi questa feature il valore consigliato è un valore 
           pari quello di max_connection
           Default 5




27/11/08       /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                                page 22
Resource Usage ­ Memory

     maintenance_work_mem (integer) : Imposta la 
     quantità totale di memoria utilizzata per le 
     operazioni di amministrazioni del database 
     VACUUM, CREATE INDEX, ALTER TABLE ADD 
     FOREIGN KEY.
           Per ogni sessione una sola può essere eseguita una solo 
           di queste operazioni → E' buona norma avere un valore 
           molto maggiore di work_mem per migliorare le 
           performance di vacuum e restore.
           Default 16 Mb




27/11/08     /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                              page 23
Resource Usage ­ Memory

      max_stack_depth (integer) : Imposta la profondità 
      massima dello stack in Kb.
           Default 2 Mb
           Di solito va bene così
           Aumentare lo stack significativamente può comportare 
           che una funzione ricorsiva può provocare il crash del  
           singolo processo server in questione.
           E' raccomandabile non modificare questo valore.




27/11/08    /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp
                                                                             page 24
Ad

Recommended

PostgreSQL: Prima configurazione
PostgreSQL: Prima configurazione
Enrico Pirozzi
 
PostgreSQL: Archtettura per la gestione dei pro
PostgreSQL: Archtettura per la gestione dei pro
Enrico Pirozzi
 
PostgreSQL : Architettura di storage
PostgreSQL : Architettura di storage
Enrico Pirozzi
 
Pgtraining bdr
Pgtraining bdr
PgTraining
 
Ap Camp 2011
Ap Camp 2011
Enrico Pirozzi
 
MontelLUG - Conferenze 2007 - Introduzione a RSync
MontelLUG - Conferenze 2007 - Introduzione a RSync
Manuel Dalla Lana
 
PostgreSQL: Integrità dei dati
PostgreSQL: Integrità dei dati
Enrico Pirozzi
 
Linux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compatta
Alessandro Selli
 
PostgreSQL: Point in time recovery
PostgreSQL: Point in time recovery
Enrico Pirozzi
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
Fulvio Corno
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatile
Ivan Rossi
 
Sottoli in the cloud
Sottoli in the cloud
dema
 
Compilazione Kernel
Compilazione Kernel
N3mes1s Uncategorized
 
The Google File System
The Google File System
Alessandra Zullo
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml Mconsole
Majong DevJfu
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazione
Fulvio Corno
 
Slax su pendrive
Slax su pendrive
Roberto Flenghi
 
Post gresql su_raspberry
Post gresql su_raspberry
Marco Buttolo
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
MongoDB
 
Hadoop in action!
Hadoop in action!
Gabriele Lombari
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumate
Marco Buttolo
 
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Claudio Cardinali
 
Socket python
Socket python
Marco Buttolo
 
LUG - Ricompilazione kernel
LUG - Ricompilazione kernel
Alessandro Manfredi
 
Raspberry omv
Raspberry omv
Pipperss
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
MongoDB
 
Idp, passo dopo passo!
Idp, passo dopo passo!
Claudio Marotta
 
Messa in rete
Messa in rete
PgTraining
 
PostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e locking
Enrico Pirozzi
 
PostgreSQL
PostgreSQL
Enrico Pirozzi
 

More Related Content

What's hot (20)

PostgreSQL: Point in time recovery
PostgreSQL: Point in time recovery
Enrico Pirozzi
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
Fulvio Corno
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatile
Ivan Rossi
 
Sottoli in the cloud
Sottoli in the cloud
dema
 
Compilazione Kernel
Compilazione Kernel
N3mes1s Uncategorized
 
The Google File System
The Google File System
Alessandra Zullo
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml Mconsole
Majong DevJfu
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazione
Fulvio Corno
 
Slax su pendrive
Slax su pendrive
Roberto Flenghi
 
Post gresql su_raspberry
Post gresql su_raspberry
Marco Buttolo
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
MongoDB
 
Hadoop in action!
Hadoop in action!
Gabriele Lombari
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumate
Marco Buttolo
 
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Claudio Cardinali
 
Socket python
Socket python
Marco Buttolo
 
LUG - Ricompilazione kernel
LUG - Ricompilazione kernel
Alessandro Manfredi
 
Raspberry omv
Raspberry omv
Pipperss
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
MongoDB
 
Idp, passo dopo passo!
Idp, passo dopo passo!
Claudio Marotta
 
Messa in rete
Messa in rete
PgTraining
 
PostgreSQL: Point in time recovery
PostgreSQL: Point in time recovery
Enrico Pirozzi
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
Fulvio Corno
 
Glusterfs: un filesystem altamente versatile
Glusterfs: un filesystem altamente versatile
Ivan Rossi
 
Sottoli in the cloud
Sottoli in the cloud
dema
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml Mconsole
Majong DevJfu
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazione
Fulvio Corno
 
Post gresql su_raspberry
Post gresql su_raspberry
Marco Buttolo
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
MongoDB
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumate
Marco Buttolo
 
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Server di posta aziendale su protocollo IMAP, antispam, antivirus, webmail, g...
Claudio Cardinali
 
Raspberry omv
Raspberry omv
Pipperss
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
MongoDB
 

Viewers also liked (10)

PostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e locking
Enrico Pirozzi
 
PostgreSQL
PostgreSQL
Enrico Pirozzi
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
Daniele Mondello
 
Automation Night (Docker)
Automation Night (Docker)
Giuliano Latini
 
Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb
PgTraining
 
PostgreSQL: Approximated searches
PostgreSQL: Approximated searches
Enrico Pirozzi
 
Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)
PgTraining
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
giacomos
 
Docker Fudamentals
Docker Fudamentals
mvetro
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
Roberto Messora
 
PostgreSQL: Transazioni e locking
PostgreSQL: Transazioni e locking
Enrico Pirozzi
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
Daniele Mondello
 
Automation Night (Docker)
Automation Night (Docker)
Giuliano Latini
 
Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb
PgTraining
 
PostgreSQL: Approximated searches
PostgreSQL: Approximated searches
Enrico Pirozzi
 
Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)
PgTraining
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
giacomos
 
Docker Fudamentals
Docker Fudamentals
mvetro
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
Roberto Messora
 
Ad

Similar to PostgreSQL : Tuning (20)

Assemblare un pc
Assemblare un pc
HardwarePcJenny
 
Elaborazione automatica dei dati: calcolatore e matlab
Elaborazione automatica dei dati: calcolatore e matlab
profman
 
MySQL 5
MySQL 5
jekil
 
Cesvip 20110127
Cesvip 20110127
Alessandro Grandi
 
Struttura dell'elaboratore (sample)
Struttura dell'elaboratore (sample)
Parco nord.
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
Marco Ferrigno
 
DHow2 - L5
DHow2 - L5
Marco Santambrogio
 
Cpu Abacus
Cpu Abacus
abacus2010
 
Cpu abacus
Cpu abacus
abacus2010
 
Cpu
Cpu
abacus2010
 
Jvm performance Tuning
Jvm performance Tuning
Marco Sabatini
 
Implementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilità
Alfredo Parisi
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Codemotion
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Matteo Baccan
 
Battaglia Navale
Battaglia Navale
PaoloVanacore
 
Cluster Domino "two is mei che one"
Cluster Domino "two is mei che one"
Dominopoint - Italian Lotus User Group
 
Modulo 1 - Lezione 2
Modulo 1 - Lezione 2
Giacomo Migliorini
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cache
Andrea Dottor
 
Foundation server
Foundation server
Chiara Grande
 
Linux Device Drivers
Linux Device Drivers
Fabio Nisci
 
Elaborazione automatica dei dati: calcolatore e matlab
Elaborazione automatica dei dati: calcolatore e matlab
profman
 
MySQL 5
MySQL 5
jekil
 
Struttura dell'elaboratore (sample)
Struttura dell'elaboratore (sample)
Parco nord.
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
Marco Ferrigno
 
Jvm performance Tuning
Jvm performance Tuning
Marco Sabatini
 
Implementazione di un ambiente in alta affidabilità
Implementazione di un ambiente in alta affidabilità
Alfredo Parisi
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Codemotion
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Matteo Baccan
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cache
Andrea Dottor
 
Linux Device Drivers
Linux Device Drivers
Fabio Nisci
 
Ad

Recently uploaded (19)

Experiencing MIS 5th Edition Kroenke Test Bank
Experiencing MIS 5th Edition Kroenke Test Bank
twyoymgar4752
 
eNERGIZER DEMO teaching dance performance.pptx
eNERGIZER DEMO teaching dance performance.pptx
louellarepollo
 
PENSIERI INUTILI essay about democracy and identity
PENSIERI INUTILI essay about democracy and identity
venetianlanguage
 
Dormancy in Aquatic Organisms Theory Human Use and Modeling Victor R. Alekseev
Dormancy in Aquatic Organisms Theory Human Use and Modeling Victor R. Alekseev
zjqcibg889
 
I-miei-PCTO-Un-percorso-tra-Scienza-e-Cultura.pdf
I-miei-PCTO-Un-percorso-tra-Scienza-e-Cultura.pdf
ssuserd66503
 
Blueberries A Century Of Research Gough Robert Edward Korcak
Blueberries A Century Of Research Gough Robert Edward Korcak
aqjulpbi5818
 
Media Technologies 1st Edition Tarleton Gillespie
Media Technologies 1st Edition Tarleton Gillespie
qcspccqs905
 
Jacobs Legacy A Genetic View Of Jewish History David B Goldstein
Jacobs Legacy A Genetic View Of Jewish History David B Goldstein
tafgtss2769
 
Czech An Essential Grammar Bilingual James Naughton
Czech An Essential Grammar Bilingual James Naughton
gkomdigywi4802
 
Mastering Ibm I Security A Modern Stepbystep Guide Carol Woodbury
Mastering Ibm I Security A Modern Stepbystep Guide Carol Woodbury
qkznysd8395
 
Capolavorooooooooooooooooooooooooooo.pdf
Capolavorooooooooooooooooooooooooooo.pdf
ssuserd66503
 
Regole di Grammatica Italiana classe quarta.ppsx
Regole di Grammatica Italiana classe quarta.ppsx
Noto6
 
Fotovoltaico vs Nucleare qual'è la migliore fonte di energia
Fotovoltaico vs Nucleare qual'è la migliore fonte di energia
paolofvesco
 
BỘ ĐỀ KIỂM TRA THEO TỪNG CHƯƠNG HÓA HỌC 10 - THEO CHƯƠNG TRÌNH MỚI CỦA BỘ GIÁ...
BỘ ĐỀ KIỂM TRA THEO TỪNG CHƯƠNG HÓA HỌC 10 - THEO CHƯƠNG TRÌNH MỚI CỦA BỘ GIÁ...
Nguyen Thanh Tu Collection
 
Club del libro Deserto dei Tartari
Club del libro Deserto dei Tartari
paolofvesco
 
The Cosmos Astronomy In The New Millennium Paperback Jay M Pasachoff Alex Fil...
The Cosmos Astronomy In The New Millennium Paperback Jay M Pasachoff Alex Fil...
nypanokeim
 
Contemporary Research On Business And Management Siska Noviaristanti
Contemporary Research On Business And Management Siska Noviaristanti
xybnhst3272
 
Catalogo WISE-ING 2025 - Seconda Competenza
Catalogo WISE-ING 2025 - Seconda Competenza
Wise Ing
 
30 ĐỀ THI HỌC SINH GIỎI VẬT LÍ 12 – TUYỂN CHỌN TỪ CÁC TRƯỜNG THPT TRÊN TOÀN Q...
30 ĐỀ THI HỌC SINH GIỎI VẬT LÍ 12 – TUYỂN CHỌN TỪ CÁC TRƯỜNG THPT TRÊN TOÀN Q...
Nguyen Thanh Tu Collection
 
Experiencing MIS 5th Edition Kroenke Test Bank
Experiencing MIS 5th Edition Kroenke Test Bank
twyoymgar4752
 
eNERGIZER DEMO teaching dance performance.pptx
eNERGIZER DEMO teaching dance performance.pptx
louellarepollo
 
PENSIERI INUTILI essay about democracy and identity
PENSIERI INUTILI essay about democracy and identity
venetianlanguage
 
Dormancy in Aquatic Organisms Theory Human Use and Modeling Victor R. Alekseev
Dormancy in Aquatic Organisms Theory Human Use and Modeling Victor R. Alekseev
zjqcibg889
 
I-miei-PCTO-Un-percorso-tra-Scienza-e-Cultura.pdf
I-miei-PCTO-Un-percorso-tra-Scienza-e-Cultura.pdf
ssuserd66503
 
Blueberries A Century Of Research Gough Robert Edward Korcak
Blueberries A Century Of Research Gough Robert Edward Korcak
aqjulpbi5818
 
Media Technologies 1st Edition Tarleton Gillespie
Media Technologies 1st Edition Tarleton Gillespie
qcspccqs905
 
Jacobs Legacy A Genetic View Of Jewish History David B Goldstein
Jacobs Legacy A Genetic View Of Jewish History David B Goldstein
tafgtss2769
 
Czech An Essential Grammar Bilingual James Naughton
Czech An Essential Grammar Bilingual James Naughton
gkomdigywi4802
 
Mastering Ibm I Security A Modern Stepbystep Guide Carol Woodbury
Mastering Ibm I Security A Modern Stepbystep Guide Carol Woodbury
qkznysd8395
 
Capolavorooooooooooooooooooooooooooo.pdf
Capolavorooooooooooooooooooooooooooo.pdf
ssuserd66503
 
Regole di Grammatica Italiana classe quarta.ppsx
Regole di Grammatica Italiana classe quarta.ppsx
Noto6
 
Fotovoltaico vs Nucleare qual'è la migliore fonte di energia
Fotovoltaico vs Nucleare qual'è la migliore fonte di energia
paolofvesco
 
BỘ ĐỀ KIỂM TRA THEO TỪNG CHƯƠNG HÓA HỌC 10 - THEO CHƯƠNG TRÌNH MỚI CỦA BỘ GIÁ...
BỘ ĐỀ KIỂM TRA THEO TỪNG CHƯƠNG HÓA HỌC 10 - THEO CHƯƠNG TRÌNH MỚI CỦA BỘ GIÁ...
Nguyen Thanh Tu Collection
 
Club del libro Deserto dei Tartari
Club del libro Deserto dei Tartari
paolofvesco
 
The Cosmos Astronomy In The New Millennium Paperback Jay M Pasachoff Alex Fil...
The Cosmos Astronomy In The New Millennium Paperback Jay M Pasachoff Alex Fil...
nypanokeim
 
Contemporary Research On Business And Management Siska Noviaristanti
Contemporary Research On Business And Management Siska Noviaristanti
xybnhst3272
 
Catalogo WISE-ING 2025 - Seconda Competenza
Catalogo WISE-ING 2025 - Seconda Competenza
Wise Ing
 
30 ĐỀ THI HỌC SINH GIỎI VẬT LÍ 12 – TUYỂN CHỌN TỪ CÁC TRƯỜNG THPT TRÊN TOÀN Q...
30 ĐỀ THI HỌC SINH GIỎI VẬT LÍ 12 – TUYỂN CHỌN TỪ CÁC TRƯỜNG THPT TRÊN TOÀN Q...
Nguyen Thanh Tu Collection
 

PostgreSQL : Tuning

  • 1. TUNING TUNING – Ottimizzazione risorse interne 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 1
  • 2. Postgresql.conf Il file postgresql.con è il file con cui si  gestiscono la maggior parte delle configurazioni Circa 200 configurazioni in totale Possono essere raggruppate in 10 categorie Analazzeremo le principali caratteristiche del  file postgresql.conf  27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 2
  • 3. Postgresql.conf File Locations Connections and Authentication Resource Usage WAL and Checkpoints Query Tuning Error and Reporting and Logging Statistics Locale & Formatting Lock Management Maintenance 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 3
  • 4. File locations data_directory(string) :  è la directory usata per lo storage dei  dati. hba_file (string) : speficica il path verso il file pg_hba.conf  ident_file (string) : specifica il path verso il file pg_ident.conf external_pid_file (string) :   crea una ulteriore copia del process  ID. Può essere utilizzata dai tools di amministrazione che hanno  bisogno di una copia del process ID. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 4
  • 5. Connections and Authentication listen_addresses (string) : specifica gli indirizzi ip sui quali il server  si  aspetta  le  connessione  dal  client.  '*'  imposta in  ingresso  qualsiasi  rete  → da impostare solo su macchine di sviluppo. port  (integer)  :  imposta  la  porta  TCP  sulla  quale  postgresql  è  in  ascolto. max_connections  (integer)  :  imposta  il  numero  massimo  delle  connessioni che postgresql può essere in grado di accettare.  superuser_reserved_connections (integer) : imposta il numero di  connessioni riservate all'utente  PostgreSQL superuser. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 5
  • 6. max_connections Il numero massimo al momento  dell'installazione  viene  stabilito  dal comando initdb in base alle  possibilità  che  il  volstro  kernel  offre. All'aumentare  del  numero  max  di  connessioni  aumenta  il  numero  di  risorse  di  sistema  utilizzate. Qualora  il  vostro  max_connection sia >= 1000 si  consigli  di  utilizza  un  programma  di  pool  delle  connessioni. Qualora  il  vostro  sistema  non  supporti  dei  valori  di  default  molto  bassi    è  necessario  ritoccare  qualcosa  a  livello  di  http://developer.postgresql.org/pgdocs/postgres/kernel­resources.html kernel di macchina. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 6
  • 7. Connections and Authentication bonjour_name (string) : imposta il messaggio di broadcast. authentication_timeout (integer) : imposta in secondi il tempo  massimo richiesto al client per completare la propria autenticazione Ssl (boolean) : Abilita le connessioni ssl. password_encryption (boolean) :  Quando viene creato un utente  in SQL attraverso CREATE USER o ALTER USER senza passare il  parametro ENCRIPTED o UNENCRYPTED, questo parametro  determina se la password deve essere criptata o no. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 7
  • 8. Un po' di internals Considerazioni sulla  perfomance Ottimizzare l'utilizzo  delle risorse del sistema  (CPU, Memoria, Dischi) Ottimizzare le queries  inviate al database:  CREATE INDEX VACUUM CLUSTER EXPLAIN  27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 8
  • 9. Un po' di internals In questa sede  parleremo di come  ottimizzare le risorse  del server DBMS,  vediamo ora i livelli di  memoria: Registri cpu Cache cpu Kernel cache (RAM) Dischi 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 9
  • 10. Un po' di internals All'aumentare del  prezzo diminuisce la  capacità della  memoria. Tipicamente: Registri cpu : bytes Cache cpu : Kb / Mb RAM : Mb/Gb Dischi : Gb/Tb 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 10
  • 11. Un po' di internals Il  passaggio  di  dati  tra  i  vari  stadi  della  memoria  avviene  costantemente  in  un  server,  lo  swap  tra  i  registri  CPU  e  la  cache  di  CPU  non  possono  essere  gestiti  dal  DBA,  mentre  invece  è  possibile  il  tuning  tra  RAM e dischi. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 11
  • 12. Un po' di internals Un server PostgreSQL  possiede: Programmi in  esecuzione Dati e stack Shared buffer cache Kernel disk buffer cache kernel 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 12
  • 13. Un po' di internals – Shared Buffer Cache PostgreSQL  non  cambia  direttamente  le  informazioni  su  un  disco  ma  le  scrive  sullo  shared  buffer cache le informazioni vengono prelevate: Dal disk buffer cache Direttamente dal disco I  processi  di  backend  accedono  allo  shared_buffer  e se ad esempio bisogna effettuare un processo di  lettura allora la lettura avviene tutta in RAM.  27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 13
  • 14. Un po' di internals – Shared Buffer Cache 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 14
  • 15. Un po' di internals – Shared Buffer Cache COME DEVE ESSERE DIMENSIONATO LO SHARED BUFFER? 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 15
  • 16. Un po' di internals – Shared Buffer Cache Lo shared buffer deve avere la giusta dimensione  per consentire agli altri programmi di girare senza  intoppi. Se lo shared buffer è troppo grande, allora il  sistema operativo inizierà il processo di swap per  richiedere memoria per gli altri programmi in  esecuzione RALLENTAMENTO 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 16
  • 17. Un po' di internals – Shared Buffer Cache  Altro parametro importante: work_mem Specifica l'insieme totale di memoria non shared  RAM  usata per le operazioni interne di ordinamento  e tabelle di hash prima di passarle ai file  temporanei. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 17
  • 18. Resource Usage ­ Memory shared_buffers (integer) : imposta la quantità totale di  memoria usata dai buffers della shared memory. E' una quantità di memoria definita come una RAM dedicata per  Postgresql, usata per il controllo delle connessioni, esecuzione di  operazioni e altro. Postgresql necessita anche di RAM per la gestione dei buffer file  system, ordinamento etc.. per cui shared_buffers non può essere  maggiore della RAM di sistema. 32 Mb di default Deve essere almeno 128 Kb e almeno 16K*max_connections > 2Gb supportata solo per sistemi a 64 bits Incrementare shared_buffers → aumentare molto probabilmente  alcuni parametri del KERNEL SHMMAX e SHMALL. http://www.postgresql.org/docs/current/static/kernel­ resources.html 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 18
  • 19. Resource Usage ­ Memory work_mem (integer) : Specifica l'insieme totale di  memoria non shared RAM  usata per le operazioni  interne di ordinamento e tabelle di hash prima di  passarle ai file temporanei. Per una query complessa con ORDER BY, DISTINCT, MERGE  JOINS in parallelo, è possibile che si superi il valore work_mem  prima che il sistema inizi a depositare I dati su files temporanei  cosicchè la quantità di memoria utilizzata potrebbe essere di  molte volte superiore la work_mem. Questo limite ha il compito di non far andare andare il server in  swap. La work_mem è allocata per multipli di potenze di 2 Il suo valore di default è 1Mb 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 19
  • 20. Tunning Come impostare il giusto valore?  (B. Momjian) Per impostare il giusto valore conviene iniziare con il 25%  della RAM totale per quanto riguarda lo shared_buffer e  con il 2% ­  4%  della RAM totale per quanto riguarda la  work_mem. Aumentare i valori se il sistema non va in swap Diminuire i valori se il sistema va in swap.  27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 20
  • 21. Resource Usage ­ Memory temp_buffers (integer) : Imposta il numero  massimo di buffers temporanei usati per ogni  sessione del database. Una sessione può allocare buffer temporanei come da lei  richiesto fino alla quantità massima indicata da  temp_buffers. Il valore di default può essere aumentato se la vostra  applicazione usa pesantemente temporary tables. Default 8Mb 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 21
  • 22. Resource Usage ­ Memory max_prepared_transactions (integer) : Imposta il  massimo numero di transaction che possono essere  simultaneamente nello stato “prepared”.  Vedi PREPARED TRANSACTION Il valore 0 disabilità questa feature : se l'applicazione non usa  PREPARED TRANSACTION si può tranquillamente disabilitare Qualora si utilizzi questa feature il valore consigliato è un valore  pari quello di max_connection Default 5 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 22
  • 23. Resource Usage ­ Memory maintenance_work_mem (integer) : Imposta la  quantità totale di memoria utilizzata per le  operazioni di amministrazioni del database  VACUUM, CREATE INDEX, ALTER TABLE ADD  FOREIGN KEY. Per ogni sessione una sola può essere eseguita una solo  di queste operazioni → E' buona norma avere un valore  molto maggiore di work_mem per migliorare le  performance di vacuum e restore. Default 16 Mb 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 23
  • 24. Resource Usage ­ Memory max_stack_depth (integer) : Imposta la profondità  massima dello stack in Kb. Default 2 Mb Di solito va bene così Aumentare lo stack significativamente può comportare  che una funzione ricorsiva può provocare il crash del   singolo processo server in questione. E' raccomandabile non modificare questo valore. 27/11/08 /home/scotty/enrico/corso­web/finale/configurazione/slides/tuning1.odp page 24