Grundlegendes zum Zeitformat des EXPLAIN-Befehls - Postgres

14

Wenn ich den Befehl EXPLAIN ANALYZE für eine bestimmte Abfrage ausführe, kann ich den ausgegebenen Zeitwert nur schwer interpretieren. Zum Beispiel (tatsächliche Zeit = 8163.890..8163.893). Stellen die internen Dezimalstellen sich wiederholende Zeichen dar? Es tut uns leid, dies ist vielleicht eine noobische Frage, aber ich möchte sicherstellen, dass ich die Ergebnisse richtig interpretiere.

   ->  GroupAggregate  (cost=2928781.21..2929243.02 rows=1 width=27712) (actual time=8163.890..8163.893 rows=1 loops=1)
Jmoney38
quelle

Antworten:

19

actual time=8163.890..8163.893 meint

Das Initialisieren dieses Schritts ("Hochfahren") dauerte 8163,890 ms. Das
Ausführen des gesamten Schritts dauerte 8163,893 ms

In diesem Fall wurde also fast die gesamte Arbeit in der Startphase dieses Schritts erledigt.

Bearbeiten :
Dieselbe Logik wird auf die Kosteninformationen angewendet

cost=2928781.21..2929243.02 meint:

Die Kosten für die Initialisierung dieses Schritts wurden auf 2928781,21 geschätzt.
Die Kosten für die Durchführung des Schritts wurden auf 2929243,02 geschätzt

(beachte, dass "cost" keine Einheit hat - es ist ein willkürlicher Wert)

Dies wird auch hier erklärt: http://www.postgresql.org/docs/current/static/using-explain.html

ein Pferd ohne Name
quelle
Vielen Dank für die Informationen und den Link - Ich fand auch dieses Dokument hilfreich, wenn auch etwas veraltet
Jmoney38
Danke für den Link. Das Dokument ist nicht wirklich veraltet. Neuere Versionen von PostgreSQL enthalten weitere Informationen im Plan, die grundlegenden Prinzipien gelten jedoch weiterhin.
a_horse_with_no_name
Wie interpretiert man eine EXPLAIN-Analyse damit in einer verschachtelten Schleife (actual time=0.002..0.002 rows=0 loops=119878):? Ich nehme an, der Durchschnitt pro Schleife hat auf null Zeilen gerundet, was nicht hilfreich ist, aber bedeuten diese Zeiten wirklich, dass die Ausführungskosten so trivial sind, dass sie vollständig aus Startkosten bestehen?
Davos
5

Die erste Zahl gibt an, wie lange es gedauert hat, die erste Zeile in diesem Schritt zurückzugeben. Die zweite Zahl gibt an, wie lange es gedauert hat, die letzte Zeile zurückzugeben.

Scott Marlowe
quelle