Jak mogę mierzyć czas zapytania SQL za pomocą psql?


Odpowiedzi:


321

Po prostu włącz synchronizację, wprowadzając:

\timing


1
Z naszego basha opcja „-c” psqlnie pozwala na to ustawienie. Możesz to zrobić za pomocą: psql --o /dev/null <<EOF \timing select 1 EOF
3manuek

6
Albo zróbpsql -c '\timing' -c 'select 1'
cdmckay


12

Zwracany czas \timingobejmuje również opóźnienie sieciowe, jeśli łączysz się ze zdalnym serwerem.

Jeśli nie chcesz tego i nie potrzebujesz również danych wyjściowych zapytania, lepiej użyj tego EXPLAIN ANALYZE, który generuje plan zapytania wraz z szacunkami planisty oraz faktycznymi czasami wykonania.

na przykład, EXPLAIN ANALYZE SELECT foo from bar ;


1
... jedynym problemem jest to, że nie otrzymujesz normalnego wyniku zapytania.
dezso,

2
Używanie explain analyzezbiorów daje czasy, które są w przybliżeniu dwa razy większe niż to, co widzę podczas używania \timing, co jest przeciwieństwem tego, czego oczekiwałbym na podstawie komentarzy tutaj dotyczących opóźnienia sieci. Podejrzewam, że normalne wykonanie wiąże się z narzutem, analyzektóry wydłuża czas zapytania. Na podstawie dokumentów uważam, że EXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM bardostarczy Ci bardziej przydatnych informacji o czasie. Szczegółowe informacje można znaleźć na stronie postgresql.org/docs/9.6/static/sql-explain.html .
larsks,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.