Wie kann ich SQL-Abfragen mit psql zeitlich festlegen?


Antworten:


321

Schalten Sie einfach das Timing ein, indem Sie Folgendes eingeben:

\timing


1
Aus der Bash heraus psqlerlaubt die Option "-c" von diese Einstellung nicht. Sie können dies mit etwas wie: psql --o /dev/null <<EOF \timing select 1 EOF
3manuek

6
Oder machen Siepsql -c '\timing' -c 'select 1'
cdmckay


12

Die zurückgegebene Zeit \timingenthält auch die Netzwerklatenz, wenn Sie eine Verbindung zu einem Remoteserver herstellen.

Wenn Sie dies nicht möchten und auch keine Abfrageausgabe benötigen, verwenden Sie besser EXPLAIN ANALYZE, die den Abfrageplan mit den Planungsschätzungen und den tatsächlichen Ausführungszeiten ausgibt.

zum Beispiel, EXPLAIN ANALYZE SELECT foo from bar ;


1
... das einzige Problem ist, dass Sie nicht die normale Abfrageausgabe erhalten.
17.

2
Verwenden Sie explain analyzeErtragszeiten, die ungefähr doppelt so hoch sind wie die, die ich bei der Verwendung sehe. Dies \timingist das Gegenteil von dem, was ich aufgrund der Kommentare hier zur Netzwerklatenz erwarten würde. Ich vermute, dass es Overhead bei der normalen Ausführung analyzegibt, der die Abfragezeit verlängert. Ich denke, basierend auf den Dokumenten EXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM barwerden Sie dadurch mehr nützliche Timing-Informationen erhalten. Weitere Informationen finden Sie unter postgresql.org/docs/9.6/static/sql-explain.html .
Larsks
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.