PostgreSQL Execution Plan – Leitfaden

PostgreSQL Execution Plan – Leitfaden

Der PostgreSQL Execution Plan, auf Deutsch Ausführungsplan, zeigt,
wie PostgreSQL eine SQL-Abfrage intern ausführt.

Die Analyse eines Execution Plans zeigt unter anderem:

  • welche Tabellen gelesen werden
  • welche Indizes verwendet werden
  • welche Join-Methoden eingesetzt werden
  • ob Daten sortiert oder aggregiert werden
  • welche Operationen den größten Aufwand verursachen

Execution Plan anzeigen

Mit pgAdmin

  1. SQL-Abfrage im Query Tool öffnen.
  2. Auf Explain klicken.
  3. Optional unter Explain Settings die Option Costs aktivieren.
  4. Den erzeugten Execution Plan analysieren.

Access Methods – Zugriffsmethoden

Access Methods beschreiben, wie PostgreSQL Daten aus einer Tabelle
oder einem Index liest.

Zugriffsmethode Beschreibung Wann wird sie verwendet?
Seq Scan Liest jede Zeile einer Tabelle. Dies entspricht einem vollständigen
Table Scan und kann bei großen Tabellen eine aufwendige Operation sein.
Wenn kein geeigneter Index vorhanden ist.
Index Scan Durchsucht einen B-Tree-Index nach passenden Einträgen und liest
anschließend die zugehörigen Datensätze aus der Tabelle.
Wenn ein geeigneter Index existiert und verwendet werden kann.
Index Only Scan Liest die benötigten Daten direkt aus dem Index. Ein zusätzlicher
Zugriff auf die Tabelle ist nicht erforderlich.
Wenn alle benötigten Spalten im Index enthalten sind.

Join Operations

Join-Operationen kombinieren zwei Ergebnismengen zu einem gemeinsamen Resultat.

Join-Methode Beschreibung Typischer Einsatz
Nested Loop Jede Zeile einer Ergebnismenge wird mit den passenden Zeilen
der anderen Ergebnismenge verglichen.
Laut Vorlage bei großen Datenmengen oder wenn eine Tabelle deutlich
größer als die andere ist.
Hash Join Verbindet zwei Ergebnismengen mithilfe einer Hash-Struktur im Arbeitsspeicher. Laut Vorlage bei kleineren Datenmengen oder wenn die Ergebnisse
in den Arbeitsspeicher passen.
Merge Join Vergleicht zwei sortierte Ergebnismengen und führt sie zu einem
gemeinsamen Ergebnis zusammen.
Wenn die Spalten der beiden Ergebnismengen über Indizes verfügen.

Sort Operations

Sortieroperationen werden verwendet, um Ergebnismengen zu sortieren,
zu gruppieren oder weiterzuverarbeiten.

Operation Beschreibung Wann wird sie verwendet?
Sort Sortiert Datensätze anhand der angegebenen Spalten. Bei Verwendung einer ORDER BY-Klausel.
GroupAggregate Aggregiert Daten entsprechend einer GROUP BY-Klausel. Bei GROUP BY in Verbindung mit Aggregatfunktionen.
HashAggregate Aggregiert Daten mithilfe einer temporären Hash-Tabelle im Arbeitsspeicher. Bei GROUP BY in Verbindung mit Aggregatfunktionen.

Zusammenfassung

Access Methods

  • Seq Scan
  • Index Scan
  • Index Only Scan

Join Operations

  • Nested Loop
  • Hash Join
  • Merge Join

Sort Operations

  • Sort
  • GroupAggregate
  • HashAggregate

Ziel der Analyse

Beim Lesen eines Execution Plans sollte insbesondere geprüft werden:

  • Werden Indizes verwendet?
  • Gibt es Sequential Scans?
  • Welche Join-Methode wurde gewählt?
  • Müssen große Datenmengen sortiert werden?
  • Wie werden Gruppierungen und Aggregationen ausgeführt?
  • Welche Operation weist die höchsten geschätzten Kosten auf?

Fazit

Das Verständnis eines PostgreSQL Execution Plans ist eine wichtige
Grundlage für die Analyse und Optimierung von SQL-Abfragen.
Zugriffsmethoden, Join-Strategien und Sortieroperationen zeigen,
wie PostgreSQL eine Abfrage verarbeitet.

 

Dieser Beitrag wurde unter POSTGRES veröffentlicht. Setze ein Lesezeichen für den Permalink.