2012-10-01 7 views

risposta

21

Se si imposta

log_min_duration_statement = 0 
log_statement = all 

nella vostra postgresql.conf, poi si vedrà tutte le affermazioni di essere registrati nel file di log Postgres.

Se si abilita

log_duration 

che stampa anche il tempo impiegato per ogni istruzione. Questo è disattivato per impostazione predefinita.

Utilizzando il parametro log_statement è possibile controllare quali tipo della dichiarazione si vuole accedere (DDL, DML, ...)

Questo produrrà un output simile nel file di log:

 
2012-10-01 13:00:43 CEST postgres LOG: statement: select count(*) from pg_class; 
2012-10-01 13:00:43 CEST postgres LOG: duration: 47.000 ms 

Maggiori dettagli nel manuale:

Se si desidera un elenco giornaliero, probabilmente desidera configurare il file di log di ruotare su una base quotidiana. Anche questo è descritto nel manuale.

+0

grazie! per la guida Mr.a_horse_with_no_name, ma solo query è log quando ho cambiato in postgresql.conf, quello che voglio veramente è la query e il tempo di esecuzione relativo. – 9ine

+0

@ 9ine: cosa intendi con "solo query è log"? Questo è quello che hai chiesto: per registrare le query. –

+0

Intendo query e tempo di esecuzione correlato. – 9ine

2

Credo che OP richiedesse effettivamente la durata dell'esecuzione, non il timestamp.

Per includere la durata nell'output di registro, aperto pgsql/<version>/data/postgresql.conf, trovare la riga che legge

#log_duration = off 

e modificarlo in

log_duration = on 

Se non è possibile trovare il parametro dato, basta aggiungilo in una nuova riga nel file.

Dopo aver salvato le modifiche, riavviare il servizio PostgreSQL, o semplicemente richiamare

pg_ctl reload -D <path to the directory of postgresql.conf> 

esempio

pg_ctl reload -D /var/lib/pgsql/9.2/data/ 

per ricaricare la configurazione.

Problemi correlati