Wie kann ich SQL-Abfragen mit psql zeitlich festlegen?


173

Ich möchte einige SQL-Abfragen mit meiner PostgreSQL-Datenbank vergleichen.Kann ich da irgendwie mal SQL-Abfragen verwendenpsql?

+3

Weitere Informationen zum Benchmarking von PostgreSQL-Abfragen finden Sie unter http://dba.stackexchange.com/q/42012/9622 15 mai. 132013-05-15 22:29:39

236

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

\timing

+1

Aus der Bash heraus erlaubt die Option "-c" von "psql" diese Einstellung nicht.Sie können dies mit etwas wie: '' 'psql --o/dev/null 14 jul. 162016-07-14 17:38:46

+1

Oder 'psql -c '\ timing' -c 'select 1'' 24 aug. 172017-08-24 02:11:57


60

Das Timing kann mit eingeschaltet werden\timingan der psql-Eingabeaufforderung (wie Caleb bereits sagte).

Wenn Sie auf 8.4 oder höher sind,you can add an optional on/off argument to \timing, was hilfreich sein kann, wenn Sie in der Lage sein wollenset timing on in .psqlrc- Sie können dann einstellen\timing onexplizit in einem script wo klar\timingwürde es sonst ausschalten

  0

http://www.designmagick.com/article/14/PostgreSQL-Query-Timing gibt "Zugriff verweigert". 22 sep. 172017-09-22 18:01:01


1

Die Zeit dafür\timingBei return wird auch die Netzwerklatenz berücksichtigt, wenn Sie eine Verbindung zu einem Remote-Server herstellen.

Wenn Sie dies nicht möchten und auch keine Abfrageausgabe benötigen, sollten Sie es besser verwendenEXPLAIN ANALYZE, der den Abfrageplan mit den Planerschätzungen und den tatsächlichen Ausführungszeiten ausgibt.

zum Beispiel,EXPLAIN ANALYZE SELECT foo from bar ;

  0

... das einzige Problem ist, dass Sie nicht die normale Abfrageausgabe erhalten. 17 nov. 172017-11-17 04:56:18

  0

Die Verwendung von "EXPLAIN ANALYSE" ergibt Zeiten, die ungefähr doppelt so lang sind wie die von "\ timing", was das Gegenteil von dem ist, was ich aufgrund der Kommentare hier zur Netzwerklatenz erwarten würde.Ich vermute, dass es bei der normalen Ausführung von "analyse" einen Mehraufwand gibt, der die Abfragezeit verlängert.Basierend auf den Dokumenten denke ich, dass "EXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM bar" nützlichere Timing-Informationen liefert.Weitere Informationen finden Sie unter https://www.postgresql.org/docs/9.6/static/sql-explain.html. 05 dez. 172017-12-05 14:53:33