Grundlegendes zur EXPLAIN-Anweisung

Abgeschlossen

Verwenden Sie die Anweisung EXPLAIN, um den Ausführungsplan der Abfrage anzuzeigen. EXPLAIN kann mit allen SELECT-, INSERT-, UPDATE-, DELETE-, VALUES-, EXECUTE-, DECLARE- oder CREATE TABLE AS-Anweisungen verwendet werden.

Durch EXPLAIN wird der Ausführungsplan der Abfrage angezeigt, wodurch Sie nachvollziehen können, wie PostgreSQL eine Anweisung ausführt. Dabei erfahren Sie, ob Indizes verwendet oder wie Tabellen verknüpft werden und wie die Notationskosten einer Abfrage sind.

Die Syntax für EXPLAIN lautet:

EXPLAIN [ (parameter [, ...] ) ] statement

Folgende Parameter sind optional:

  • ANALYSIEREN
  • VERBOSE
  • COSTS
  • BUFFERS
  • FORMAT

Beispiel:

EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;

Diese einfache Abfrage gibt die folgenden Informationen zurück:

Screenshot: Abfrageplan

ANALYSIEREN

Diese Option führt die Anweisung aus und gibt den Abfrageplan zurück. Die Ausgabe der Anweisung wird verworfen, die Anweisung wird jedoch weiterhin ausgeführt. Sie können die ROLLBACK- und EXPLAIN ANALYZE-Anweisungen kombinieren, um zu verhindern, dass die Änderungen mit einer Abfrage angewendet werden, die Änderungen an der Datenbank vorgibt, z. B. INSERT, UPDATE oder DELETE. Zum Beispiel:

BEGIN;

> EXPLAIN ANALYZE INSERT INTO Animal 
> (ani_id, name, weight_kg, cat_id, enc_id) 
> VALUES (28, 'Robin Robin', 0.5, 1, 2);

ROLLBACK;

VERBOSE

Zeigt weitere Informationen an, einschließlich:

  • die Ausgabespaltenliste für jeden Knoten in der Planstruktur
  • die schemaqualifizierten Tabellen- und Funktionsnamen
  • die Variablennamen in Ausdrücken zusammen mit dem Tabellenalias
  • den Name jedes Triggers, für den Statistiken angezeigt werden

COSTS

Diese Option umfasst die geschätzten Startkosten und die Gesamtkosten sowie die geschätzte Anzahl von Zeilen und die geschätzte Breite jeder Zeile.

BUFFERS

Puffer können nur mit der Option ANALYZE verwendet werden. PostgreSQL verwendet einen LRU-Cache (Least Recently Used, selten verwendet), um häufig genutzte Daten im Arbeitsspeicher zu speichern. Puffer zeigen an, welcher Anteil der Daten aus einem Cache stammt und wie viele Daten von einem Datenträger abgerufen werden. Diese Option zeigt die Anzahl der freigegebenen, lokalen und temporären Blocktreffer sowie der Lese- und Schreibvorgänge an. Mit den durch BUFFERS bereitgestellten Daten können Sie die E/A-intensiven Teile einer Abfrage verstehen.

FORMAT

Diese Option bestimmt das Ausgabeformat. Die Formate XML, JSON oder YAML enthalten dieselben Informationen wie das TEXT-Format, sind für Programme jedoch einfacher zu verwenden. TEXT ist die Standardeinstellung.