STL_EXPLAIN
Exibe o plano EXPLAIN para uma consulta que foi enviada para execução.
STL_EXPLAIN permanece visível para todos os usuários. Os superusuários podem ver todas as linhas; usuários regulares podem ver somente seus próprios dados. Para ter mais informações, consulte Visibilidade de dados em tabelas e visualizações de sistema.
nota
STL_EXPLAIN só contém consultas executadas em clusters principais. Ele não contém consultas executadas em clusters de escalabilidade de simultaneidade. Para acessar consultas executadas em clusters de escalabilidade principais e de simultaneidade, é recomendável usar a exibição de monitoramento SYS SYS_QUERY_DETAIL. Os dados na exibição de monitoramento SYS são formatados para serem mais fáceis de usar e compreender.
Colunas da tabela
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
userid | inteiro | O ID do usuário que gerou a entrada. |
consulta | inteiro | ID da consulta. A coluna de consulta pode ser usada para unir outras tabelas e exibições do sistema. |
nodeid | inteiro | O identificador do nó de plano, onde o nó mapeia para uma ou mais etapas na execução da consulta. |
parentid | inteiro | O identificador do nó de plano para um nó pai. Um nó pai tem um certo número de nós filho. Por exemplo, uma junção de mesclagem é o pai das varreduras em tabelas unidas. |
plannode | character(400) | O texto do nó de saída de EXPLAIN. Os nós de planos que se referem à execução nos nós de computação são prefixados com XN na saída de EXPLAIN. |
info | character(400) | As informações sobre o qualificador e o filtro do nó de plano. Por exemplo, as condições de junção e as restrições da cláusula WHERE estão incluídas nesta coluna. |
Consultas de exemplo
Considere a seguinte saída de EXPLAIN para uma consulta de junção agregada:
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 você executar essa consulta e o ID de consulta for 10, use a tabela STL_EXPLAIN para visualizar os mesmos tipos de informações que o comando EXPLAIN retorna:
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)
Considere a seguinte consulta:
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 o ID da consulta for 15, a seguinte consulta de visualização do sistema retornará os nós do plano que foram concluídos. Nesse caso, a ordem dos nós é invertida para mostrar a ordem real de execução:
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)
A consulta a seguir recupera os IDs de consulta de todos os planos de consulta que contêm uma função de janela:
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)