STL_EXPLAIN - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

STL_EXPLAIN

Mostra il piano EXPLAIN per una query inviata in esecuzione.

STL_EXPLAIN è visibile a tutti gli utenti. Gli utenti con privilegi avanzati visualizzano tutte le righe; gli utenti regolari visualizzano solo i propri dati. Per ulteriori informazioni, consulta Visibilità dei dati nelle tabelle e nelle viste di sistema.

Nota

STL_EXPLAIN contiene solo le query eseguite sui cluster principali. Non contiene query eseguite su cluster con dimensionamento simultaneo. Per accedere alle query eseguite sui cluster principali e con dimensionamento simultaneo, ti consigliamo di utilizzare la vista di monitoraggio SYS SYS_QUERY_DETAIL. I dati nella vista di monitoraggio SYS sono formattati in modo da essere più facili da usare e comprendere.

Colonne di tabella

Nome colonna Tipo di dati Descrizione
userid integer ID dell'utente che ha generato la voce.
query integer ID query. La colonna di query può essere utilizzata per unire altre tabelle e visualizzazioni del sistema.
nodeid integer Identificatore di nodo di piano, dove un nodo corrisponde a una o più fasi nell'esecuzione della query.
parentid integer Identificatore di nodo di piano per un nodo padre. Un nodo padre ha un certo numero di nodi figli. Ad esempio, un merge join è il padre delle scansioni sulle tabelle collegate.
plannode character(400) Il testo del nodo dall'output EXPLAIN. I nodi di piano riferiti all'esecuzione sui nodi di calcolo hanno il prefisso XN nell'output EXPLAIN.
info character(400) Informazioni di qualificatore e di filtro per il nodo di piano. Ad esempio, le condizioni di join e le restrizioni di clausola WHERE sono incluse in questa colonna.

Query di esempio

Considera il seguente output EXPLAIN per una query di join d'aggregazione:

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)

Se esegui questa query e l'ID di query è 10, è possibile utilizzare la tabella STL_EXPLAIN per visualizzare lo stesso tipo di informazioni restituito dal comando EXPLAIN:

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)

Considera la query seguente:

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 ...

Se l'ID di questa query è 15, la seguente query sulla vista di sistema restituisce i nodi del piano che sono stati completati. In questo caso, l'ordine dei nodi è invertito per mostrare l'effettivo ordine di esecuzione:

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)

La seguente query recupera gli ID di query per tutti i piani di query che contengono una funzione finestra:

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)