2013-07-15 8 views
15

In der Befehlszeilenschnittstelle MySQL wird Ihnen beim Ausführen einer Abfrage angezeigt, wie lange die Abfrage nach dem Ausdruck der Ergebnisse ausgeführt wurde.Postgres Query Ausführungszeit

In der Postgres-Befehlszeilenschnittstelle (psql) wird es Ihnen nicht sagen. Ich weiß, wie ich die Protokollierung konfiguriere, damit ich die Informationen aus den Protokollen abrufen kann, aber es wäre bequemer, sie auf die Standardausgabe zu drucken, so wie es in MySQL ist.

Kann dies getan werden?

+1

Es ist sinnlos, wenn viele Google-Hits Antworten sagen "verwenden Google" - ungefähr so ​​nützlich wie eine Schokolade Teekanne! – NickJ

+0

\ timing - es macht Spaß zu reden – NickJ

+1

Es ist eine Art zu zweit. Aber wenn du es ausprobiert hast und es nicht funktioniert, beschreibe es in deiner Frage. –

Antwort

42

Verwenden Sie \timing wie von "How can I time SQL-queries using psql?" erläutert.

Siehe auch the manual for psql.

Wenn Sie serverseitige Ausführungszeiten wollen, die nicht über die Zeit sind das Ergebnis an den Client übertragen können Sie log_min_duration_statement = 0 in der Konfiguration festgelegt, dann SET client_min_messages = log, so dass Sie die Log-Informationen in der Konsole.

Sie können auch EXPLAIN ANALYZE verwenden, um detaillierte Ausführungszeiten zu erhalten. Es gibt einen gewissen Zeitaufwand dafür, es sei denn, Sie verwenden EXPLAIN (ANALYZE TRUE, TIMING FALSE), was nur in neueren Versionen der Fall ist, und deaktivieren das detaillierte Timing, um stattdessen nur eine Gesamtausführungszeit anzugeben.

PgBadger, insbesondere in Kombination mit the auto_explain module, können nützliche aggregierte Statistiken aus der Protokollanalyse bereitstellen.

Schließlich gibt es pg_stat_statements, die praktische Aggregat Informationen auf dem laufenden System sammeln können.

+1

und wie Sie das \ timing – aName

+0

verwenden Verwenden Sie das [Handbuch] (https://www.postgresql.org/docs/current/static/app-psql.html) oder [das Google] (https://www.google .com.au/Suche? q = psql + Timing). Oh, ich merke dir [habe gerade eine Frage dazu gestellt] (http://stackoverflow.com/q/40593723/398670). Vielleicht hättest du dich damit verbinden sollen, also habe ich meine Zeit damit verschwendet, dir hier zu antworten. –

5

Ich denke, dass EXPLAIN ANALYSE könnte

Syntax Ihnen nützlich sein:

EXPLAIN ANALYSE query; 

Beispiel;

EXPLAIN ANALYSE 
SELECT * 
FROM demotable; 

Ausgang:

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