2013-07-15 15 views
15

In l'interfaccia a riga di comando MySQL, quando si esegue una query vi dirà quanto tempo la query ha preso da eseguire dopo la stampa i risultati.Postgres Query tempo di esecuzione

Nell'interfaccia della riga di comando Postgres (psql) che non vi dico. So come configurare il logging in modo da poter ottenere le informazioni dai log, ma sarebbe più comodo farlo stampare su output standard come fa in MySQL.

Questo può essere fatto?

+1

è inutile quando molti successi di Google sono risposte dicendo "usare Google" - quanto di più utile come una teiera di cioccolato! – NickJ

+0

\ timing - è divertente parlare – NickJ

+1

È un modo di fare coppia. Ma ancora, se lo hai provato e non funziona, descrivilo nella tua domanda. –

risposta

42

Usa \timing come spiegato da "How can I time SQL-queries using psql?".

Vedere anche the manual for psql.

Se volete lato server tempi di esecuzione che non includono il tempo per trasferire il risultato al client, è possibile impostare log_min_duration_statement = 0 nella configurazione, quindi SET client_min_messages = log in modo da ottenere le informazioni di log nella console.

È inoltre possibile utilizzare EXPLAIN ANALYZE per ottenere tempi di esecuzione dettagliate. C'è un po 'di tempo di overhead per questo a meno che non si usi EXPLAIN (ANALYZE TRUE, TIMING FALSE), che è solo nelle versioni più recenti, e si disabilita il timing dettagliato per dare solo un tempo di esecuzione aggregato.

PgBadger, in particolare se combinato con the auto_explain module, può fornire statistiche aggregate utili dall'analisi del registro.

Infine, c'è pg_stat_statements, che può raccogliere informazioni aggregate a portata di mano sul sistema in esecuzione.

+1

e come utilizzare il \ tempistica – aName

+0

Usare i tasti [Manuale] (https://www.postgresql.org/docs/current/static/app-psql.html) o [Google] (https://www.google .com.au/search? q = psql + distribuzione). Oh, noto che hai appena postato una domanda anche a questo proposito (http://stackoverflow.com/q/40593723/398670). Forse dovresti esserti collegato, quindi non ho perso tempo a risponderti qui. –

5

penso che EXPLAIN ANALYSE potrebbe essere utile a voi

Sintassi:

EXPLAIN ANALYSE query; 

Esempio;

EXPLAIN ANALYSE 
SELECT * 
FROM demotable; 

uscita:

"Seq Scan on demotable (cost=0.00..12.10 rows=210 width=356) 
         (actual time=0.020..0.021 rows=8 loops=1)" 
"Planning time: 18.477 ms" 
"Execution time: 0.042 ms"