STL_EXPLAIN
실행을 목적으로 제출된 쿼리의 EXPLAIN 계획을 표시합니다.
STL_EXPLAIN은 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.
참고
STL_EXPLAIN에는 기본 클러스터에서 실행되는 쿼리만 포함됩니다. 동시성 조정 클러스터에서 실행되는 쿼리는 포함되지 않습니다. 기본 및 동시성 조정 클러스터 모두에서 실행되는 쿼리에 액세스하려면 SYS 모니터링 뷰인 SYS_QUERY_DETAIL을 사용하는 것이 좋습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다.
테이블 열
열 명칭 | 데이터 유형 | 설명 |
---|---|---|
userid | 정수 | 항목을 생성한 사용자의 ID. |
쿼리 | 정수 | 쿼리 ID. 쿼리 열을 사용하여 다른 시스템 테이블 및 보기를 조인할 수 있습니다. |
nodeid | 정수 | 계획 노드 식별자. 쿼리 실행 시 이 식별자를 통해 노드가 1개 이상의 단계로 매핑됩니다. |
parentid | 정수 | 상위 노드를 나타내는 계획 노드 식별자. 상위 노드 1개에는 하위 노드가 다수 종속됩니다. 예를 들어 병합 조인은 조인 테이블에서 스캔에 대한 상위 노드입니다. |
plannode | character(400) | EXPLAIN 출력의 노드 텍스트. 컴퓨팅 노드에서 실행을 의미하는 계획 노드에는 EXPLAIN 출력 시 XN 접두사가 첨부됩니다. |
정보 | character(400) | 계획 노드의 한정자 및 필터 정보. 예를 들어 조인 조건과 WHERE 절 제한이 이 열에 포함됩니다. |
샘플 쿼리
집계 조인 쿼리의 EXPLAIN 출력이 다음과 같다고 가정하겠습니다.
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)
이 쿼리를 실행하고, 쿼리 ID가 10이라면 STL_EXPLAIN 테이블을 사용하여 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)
다음과 같은 쿼리를 가정합니다.
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 ...
이 쿼리의 ID가 15라면 다음과 같은 시스템 보기 쿼리에서 이전에 완료한 계획 노드가 반환됩니다. 이때 노드 순서가 반전되면서 실제 실행 순서를 표시합니다.
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)
다음은 창 함수가 포함된 모든 쿼리 계획의 쿼리 ID를 가져오는 쿼리입니다.
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)