SVCS_EXPLAIN - Amazon Redshift

SVCS_EXPLAIN

실행을 목적으로 제출된 쿼리의 EXPLAIN 계획을 표시합니다.

참고

접두사 SVCS를 포함하는 시스템 뷰는 동시성 확장 클러스터와 기본 클러스터 모두의 쿼리에 대한 세부 정보를 제공합니다. 이 뷰는 접두사 STL을 포함하는 테이블과 유사합니다. 단, STL 테이블은 기본 클러스터에서 실행된 쿼리에 대한 정보만 제공합니다.

SVCS_EXPLAIN은 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.

테이블 열

열 명칭 데이터 유형 설명
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이라면 SVCS_EXPLAIN 테이블을 사용하여 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)

다음과 같은 쿼리를 가정합니다.

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

다음은 창 함수가 포함된 모든 쿼리 계획의 쿼리 ID를 가져오는 쿼리입니다.

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)