EXPLAIN und EXPLAIN ANALYZE
Diese beiden Tools sind die Hauptgrundlage für die Suche nach Leistungsproblemen bei den von uns gestellten Abfragen. Trotz ihrer Nützlichkeit sind sie nicht neu, da sie seit den Anfangsjahren in PostgreSQL enthalten sind. Dies bedeutet jedoch nicht, dass sie veraltet oder veraltet sind Im Gegenteil, sie sind veraltet und haben sich zu einem Tool entwickelt, das die detailliertesten Berichte über die Ausführung der Abfrage liefert, einschließlich der Ergebnisse, die das Tool liefert, das wir in Formaten wie XML oder JSON für die weitere Analyse mit anderen Tools verwenden können .
In pgAdmin haben wir die Möglichkeit, ein Diagramm des EXPLAIN- Ergebnisses abzurufen, sodass anstelle der Analyse von Zahlen ein Diagramm angezeigt wird und auf diese Weise Abfrageprobleme und Verbesserungsmöglichkeiten leichter erkannt werden können.
Unterschiede zwischen EXPLAIN und EXPLAIN ANALYZE
Möglicherweise werden beide Begriffe so verwendet, als ob sie dasselbe wären. Zwischen ihnen bestehen jedoch Unterschiede. Beispielsweise gibt EXPLAIN eine Vorstellung davon, wie der Abfrageplaner die Abfrage ausführen möchte , führt sie jedoch nicht aus, sondern EXPLAIN ANALYZE, wenn sie ausgeführt wird und es gibt uns einen Vergleich zwischen der erwarteten Leistung und der tatsächlichen Leistung, die in der Ausführung erhalten wird. Wenn Sie EXPLAIN über pgAdmin starten , können Sie zwischen EXPLAIN und EXPLAIN ANALYZE wählen. Dies gibt uns das Ergebnis jedes einzelnen bei der Auswahl
Schauen wir uns ein Beispiel für die Verwendung dieses Tools an. Verwenden wir EXPLAIN ANALYZE und sehen wir uns den folgenden Code an:
EXPLAIN ANALYZE SELECT left (tract_id, 5) Als county_code, SUM (hispanic_or_latino) Als tot , SUM (white_alone) Wie tot_white SUM (coalesce (hispanic_or_latino, 0) - coalesce (white_alone, 0)) AS non_white FROM census.hisp_pop GROUP BY county_code ***** BY county_code;
Es ist eine sehr einfache Abfrage, bei der wir Feldsummen erstellen, die wir nach einem der Felder gruppieren und sortieren. Das Ergebnis der Leistungsanalyse lautet wie folgt:
GroupAggregate (Kosten = 111.29..151.93 Zeilen = 1478 Breite = 20) (aktuelle Zeit = 6.099..10.194 Zeilen = 14 Schleifen = 1) -> Sortieren (Kosten = 111.29..114.98 Zeilen = 1478 Breite = 20) (aktuelle Zeit = 5.897..6.565 Zeilen = 1478 Schleifen = 1) Sortierschlüssel: ("left" ((tract_id) :: text, 5)) Sortiermethode: quicksort Speicher: 136kB -> Seq Scan auf hisp_pop (Kosten = 0.00..33.48 Zeilen = 1478 Breite = 20) (aktuelle Zeit = 0.390..2.693 Zeilen = 1478 Schleifen = 1) Gesamtlaufzeit: 10.370 ms
Wenn wir uns ein wenig um das Lesen bemühen, werden die Ergebnisse nach und nach besser lesbar. Wenn wir jedoch nicht viel Zeit haben oder das Ergebnis sehr lang ist, können wir die Grafik immer sehen.
Wie wir sehen, ist es schneller, die Ergebnisse auf grafischer Ebene zu sehen. Ideal ist es, beide Werkzeuge zu verwenden und beide Gesichtspunkte zu ergänzen. Es gibt die gleichen Informationen nur mit unterschiedlichen Blickwinkeln. Es wird Puristen geben, die nur mit der Befehlskonsole arbeiten wollen und es ist in Ordnung Ein umfassender Datenbankexperte sollte jedoch alle ihm zur Verfügung stehenden Tools verwenden, um seine Arbeit zu verbessern.
Damit beenden wir das Tutorial. Mit diesen Tools sind wir in der Lage, die Ursachen zu ermitteln, die dazu führen, dass unsere Abfragen nicht schnell sind, oder Verbesserungsmöglichkeiten zur Optimierung unserer Abfrage.