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

SVCS_EXPLAIN

Mostra il piano EXPLAIN per una query inviata in esecuzione.

Nota

Le visualizzazioni di sistema con il prefisso SVCS forniscono i dettagli relativi alle query nei cluster principale e di dimensionamento della simultaneità. Le visualizzazioni sono simili alle tabelle con il prefisso STL, tranne per il fatto che le tabelle STL forniscono informazioni solo per le query eseguite nel cluster principale.

SVCS_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, consultare Visibilità dei dati nelle tabelle e nelle viste di sistema.

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 SVCS_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 svcs_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 di tabella di sistema restituisce i nodi di piano che sono stati eseguiti. 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 svcs_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 svcs_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)