Ich möchte einige SQL-Abfragen mit meiner PostgreSQL-Datenbank vergleichen. Gibt es eine Möglichkeit, wie ich SQL-Abfragen zeitlich festlegen kann psql?
Ich möchte einige SQL-Abfragen mit meiner PostgreSQL-Datenbank vergleichen. Gibt es eine Möglichkeit, wie ich SQL-Abfragen zeitlich festlegen kann psql?
Antworten:
Das Timing kann mit \timingder psql-Eingabeaufforderung aktiviert werden (wie Caleb bereits sagte).
In Version 8.4 oder höher können Sie optional ein Ein / Aus-Argument hinzufügen. \timingDies kann hilfreich sein, wenn Sie das Timing in .psqlrc aktivieren möchten. Sie können dies dann \timing onexplizit in einem Skript festlegen, in dem plain \timingandernfalls umschalten würde es aus
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 ;
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 .