Chciałbym przetestować niektóre zapytania SQL względem mojej bazy danych PostgreSQL. Czy jest jakiś sposób na sprawdzenie czasu zapytań SQL psql
?
postgresql
benchmark
psql
Jonas
źródło
źródło
Odpowiedzi:
Po prostu włącz synchronizację, wprowadzając:
\timing
źródło
psql
nie pozwala na to ustawienie. Możesz to zrobić za pomocą:psql --o /dev/null <<EOF \timing select 1 EOF
psql -c '\timing' -c 'select 1'
Czas można włączyć za pomocą
\timing
polecenia psql (jak już powiedział Caleb).Jeśli korzystasz z wersji 8.4 lub nowszej, możesz dodać opcjonalny argument wł. / Wył.
\timing
, Który może być pomocny, jeśli chcesz mieć możliwość ustawiania czasu w .psqlrc - możesz wtedy ustawić\timing on
jawnie w skrypcie, w którym zwykłyby\timing
przełączałyby się to wyłączoneźródło
Zwracany czas
\timing
obejmuje 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 ;
źródło
explain analyze
zbioró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,analyze
który wydłuża czas zapytania. Na podstawie dokumentów uważam, żeEXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM bar
dostarczy Ci bardziej przydatnych informacji o czasie. Szczegółowe informacje można znaleźć na stronie postgresql.org/docs/9.6/static/sql-explain.html .