Zrozumienie formatu czasu polecenia EXPLAIN - Postgres

14

Kiedy uruchamiam komendę EXPLAIN ANALYZE dla danego zapytania, mam trudności z interpretacją wartości czasu wyjściowego. Na przykład (rzeczywisty czas = 8163,890..8163,893). Czy ułamki dziesiętne reprezentują powtarzające się znaki? Przepraszamy, może to być pytanie noobish, ale chcę się upewnić, że poprawnie interpretuję wyniki.

   ->  GroupAggregate  (cost=2928781.21..2929243.02 rows=1 width=27712) (actual time=8163.890..8163.893 rows=1 loops=1)
Jmoney38
źródło

Odpowiedzi:

19

actual time=8163.890..8163.893 znaczy

Zainicjowanie tego kroku („uruchomienie”) zajęło 8163.890ms
Uruchomienie całego kroku zajęło 8163.893ms

W takim przypadku prawie cała praca została wykonana w fazie uruchamiania tego etapu.

Edycja :
Tę samą logikę stosuje się do informacji o kosztach

cost=2928781.21..2929243.02 znaczy:

Koszt zainicjowania tego kroku został oszacowany na: 2928781,21
Koszt wykonania tego kroku został oszacowany na: 2929243,02

(zwróć uwagę, że „koszt” nie ma jednostki - jest to dowolna wartość)

Wyjaśniono to również tutaj: http://www.postgresql.org/docs/current/static/using-explain.html

koń bez imienia
źródło
Dziękuję za informacje i link - ten dokument też był pomocny, choć nieco nieaktualny
Jmoney38,
Dzięki za link. Dokument nie jest tak naprawdę nieaktualny. Nowsze wersje PostgreSQL zawierają więcej informacji w planie, ale nadal obowiązują podstawowe zasady.
a_horse_w_no_name
Jak można zinterpretować wyjaśniania analizować z tym w zagnieżdżonej pętli: (actual time=0.002..0.002 rows=0 loops=119878)? Przypuszczam, że średnia na pętlę zaokrągliła do zerowych wierszy, co jest nieprzydatne, ale czy te czasy naprawdę oznaczają, że koszt wykonania jest tak trywialny, że w całości składa się z kosztu uruchomienia?
Davos
5

Pierwsza liczba określa, ile czasu zajęło zwrócenie pierwszego wiersza w tym kroku. Druga liczba to czas powrotu ostatniego wiersza.

Scott Marlowe
źródło