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
Visualizza il EXPLAIN piano per una query che è stata inviata per l'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_ contiene EXPLAIN solo le query eseguite sui cluster principali. Non contiene query eseguite su cluster con dimensionamento simultaneo. Per accedere alle query eseguite su cluster con scalabilità principale e simultanea, si consiglia di utilizzare la visualizzazione di monitoraggio. SYS SYS_QUERY_DETAIL I dati nella visualizzazione di SYS monitoraggio sono formattati per 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'EXPLAINoutput. I nodi di piano che fanno riferimento all'esecuzione sui nodi di calcolo hanno il prefisso XN nell'EXPLAINoutput. |
info | character(400) | Informazioni di qualificatore e di filtro per il nodo di piano. Ad esempio, in questa colonna sono incluse le condizioni di unione e le restrizioni relative alle WHERE clausole. |
Query di esempio
Considerate il seguente EXPLAIN output per una query di join aggregata:
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 si esegue questa query e il relativo ID è 10, è possibile utilizzare la EXPLAIN tabella STL _ per visualizzare lo stesso tipo di informazioni restituite dal EXPLAIN comando:
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 l'interrogazione IDs per tutti i piani di interrogazione che contengono una funzione window:
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)