STL_EXPLAIN - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

STL_EXPLAIN

Zeigt den EXPLAIN Plan für eine Abfrage an, die zur Ausführung eingereicht wurde.

STL_ EXPLAIN ist für alle Benutzer sichtbar. Superuser können alle Zeilen sehen; reguläre Benutzer können nur ihre eigenen Daten sehen. Weitere Informationen finden Sie unter Sichtbarkeit der Daten in Systemtabellen und Ansichten.

Anmerkung

STL_ enthält EXPLAIN nur Abfragen, die auf Hauptclustern ausgeführt werden. Abfragen, die auf Nebenläufigkeitsskalierungs-Clustern ausgeführt werden, sind nicht enthalten. Für den Zugriff auf Abfragen, die sowohl auf Haupt- als auch auf Clustern zur Parallelitätsskalierung ausgeführt werden, empfehlen wir, die SYS Überwachungsansicht SYS_QUERY_DETAIL zu verwenden. Die Daten in der SYS Überwachungsansicht sind so formatiert, dass sie einfacher zu verwenden und zu verstehen sind.

Tabellenspalten

Spaltenname Datentyp Beschreibung
userid integer ID des Benutzers, der den Eintrag generiert hat.
query integer Abfrage-ID. Die Abfrage-Spalte kann verwendet werden, um andere Systemtabellen und Anzeigen anzufügen.
nodeid integer Plan-Knoten-ID, wo ein Knoten mit einem oder mehreren Schritten in der Ausführung der Abfrage verwunden ist.
parentid integer Plan-Knoten-ID für einen übergeordneten Knoten. Zu einem übergeordneten Knoten gehört eine bestimmte Anzahl untergeordneter Knoten. So ist beispielsweise ein Zusammenführungsknoten der übergeordnete Knoten der Scans in den verbundenen Tabellen.
plannode character(400) Der Knotentext aus der EXPLAIN Ausgabe. Planknoten, die sich auf die Ausführung auf Rechenknoten beziehen, erhalten XN in der EXPLAIN Ausgabe ein Präfix.
info character(400) Qualifizierer- und Filterinformationen für den Plan-Knoten. In dieser Spalte sind beispielsweise Verbindungsbedingungen und WHERE Klauseleinschränkungen enthalten.

Beispielabfragen

Betrachten Sie die folgende EXPLAIN Ausgabe für eine aggregierte Join-Abfrage:

explain select avg(datediff(day, listtime, saletime)) as avgwait from sales, listing where sales.listid = listing.listid; QUERY PLAN ------------------------------------------------------------------------------ XN Aggregate (cost=6350.30..6350.31 rows=1 width=16) -> XN Hash Join DS_DIST_NONE (cost=47.08..6340.89 rows=3766 width=16) Hash Cond: ("outer".listid = "inner".listid) -> XN Seq Scan on listing (cost=0.00..1924.97 rows=192497 width=12) -> XN Hash (cost=37.66..37.66 rows=3766 width=12) -> XN Seq Scan on sales (cost=0.00..37.66 rows=3766 width=12) (6 rows)

Wenn Sie diese Abfrage ausführen und ihre Abfrage-ID 10 ist, können Sie die EXPLAIN Tabelle STL _ verwenden, um dieselben Informationen zu sehen, die der EXPLAIN Befehl zurückgibt:

select query,nodeid,parentid,substring(plannode from 1 for 30), substring(info from 1 for 20) from stl_explain where query=10 order by 1,2; query| nodeid |parentid| substring | substring -----+--------+--------+--------------------------------+------------------- 10 | 1 | 0 |XN Aggregate (cost=6717.61..6 | 10 | 2 | 1 | -> XN Merge Join DS_DIST_NO | Merge Cond:("outer" 10 | 3 | 2 | -> XN Seq Scan on lis | 10 | 4 | 2 | -> XN Seq Scan on sal | (4 rows)

Betrachten Sie folgende Abfrage:

select event.eventid, sum(pricepaid) from event, sales where event.eventid=sales.eventid group by event.eventid order by 2 desc; eventid | sum --------+---------- 289 | 51846.00 7895 | 51049.00 1602 | 50301.00 851 | 49956.00 7315 | 49823.00 ...

Wenn die ID dieser Abfrage 15 ist, gibt die folgende Systemansichtsabfrage die ausgeführten Plan-Knoten aus. In diesem Fall ist die Reihenfolge der Knoten umgekehrt, um die tatsächliche Ausführungsreihenfolge zu zeigen:

select query,nodeid,parentid,substring(plannode from 1 for 56) from stl_explain where query=15 order by 1, 2 desc; query|nodeid|parentid| substring -----+------+--------+-------------------------------------------------------- 15 | 8 | 7 | -> XN Seq Scan on eve 15 | 7 | 5 | -> XN Hash(cost=87.98..87.9 15 | 6 | 5 | -> XN Seq Scan on sales(cos 15 | 5 | 4 | -> XN Hash Join DS_DIST_OUTER(cos 15 | 4 | 3 | -> XN HashAggregate(cost=862286577.07.. 15 | 3 | 2 | -> XN Sort(cost=1000862287175.47..10008622871 15 | 2 | 1 | -> XN Network(cost=1000862287175.47..1000862287197. 15 | 1 | 0 |XN Merge(cost=1000862287175.47..1000862287197.46 rows=87 (8 rows)

Die folgende Abfrage ruft die Abfrage IDs für alle Abfragepläne ab, die eine Fensterfunktion enthalten:

select query, trim(plannode) from stl_explain where plannode like '%Window%'; query| btrim -----+------------------------------------------------------------------------ 26 | -> XN Window(cost=1000985348268.57..1000985351256.98 rows=170 width=33) 27 | -> XN Window(cost=1000985348268.57..1000985351256.98 rows=170 width=33) (2 rows)