SVL_QUERY_REPORT - Amazon Redshift

SVL_QUERY_REPORT

Amazon Redshift는 여러 Amazon Redshift STL 시스템 테이블의 UNION에서 SVL_QUERY_REPORT를 생성하여 완료된 쿼리 단계에 대한 정보를 제공합니다.

이 보기는 완료된 쿼리에 대한 정보를 조각 및 단계 기준으로 분류하며, Amazon Redshift 클러스터에서 노드 및 조각 문제를 해결하는 데 도움이 될 수 있습니다.

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

이 테이블의 데이터 중 일부 또는 전부는 SYS 모니터링 뷰인 SYS_QUERY_DETAIL에서도 찾아볼 수 있습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다. 쿼리에 SYS 모니터링 뷰를 사용하는 것이 좋습니다.

테이블 열

열 명칭 데이터 유형 설명
userid 정수 항목을 생성한 사용자의 ID.
쿼리 정수 쿼리 ID. 다양한 다른 시스템 테이블 및 보기를 조인하는 데 사용할 수 있습니다.
slice 정수 단계가 실행된 데이터 조각입니다.
segment 정수

세그먼트 번호.

하나의 쿼리는 여러 세그먼트로 구성되며, 각각의 세그먼트는 하나 이상의 단계로 구성됩니다. 쿼리 세그먼트는 병렬로 실행될 수 있습니다. 각 세그먼트는 단일 프로세스에서 실행됩니다.

step 정수 완료된 쿼리 단계입니다.
start_time 타임스탬프 세그먼트가 실행되기 시작한 정확한 UTC 시간으로 정확한 소수부 초를 나타내는 여섯 자리가 포함됩니다. 예: 2012-12-12 11:29:19.131358
end_time 타임스탬프 세그먼트 실행이 종료된 정확한 UTC 시간으로 정확한 소수부 초를 나타내는 여섯 자리가 포함됩니다. 예: 2012-12-12 11:29:19.131467
경과 시간 bigint 세그먼트가 실행되는 데 걸린 시간(마이크로초)입니다.
rows bigint 단계에 의해 만들어진 행의 수(조각당). 이 수는 단계가 수신하거나 처리한 행의 수가 아니라 단계의 실행에서 발생하는 조각의 행 수를 나타냅니다. 다시 말해 이것은 단계에서 살아남아 다음 단계로 전달되는 행의 수입니다.
bytes bigint 단계에 의해 생성되는 바이트의 수(조각당).
레이블 char(256) 쿼리 단계 이름 및 해당되는 경우, 테이블 ID와 테이블 이름으로 구성되는 단계 레이블(예: scan tbl=100448 name =user). 3자리 테이블 ID는 일반적으로 일시적 테이블의 스캔을 가리킵니다. tbl=0이 표시된다면 일반적으로 일정한 값의 스캔을 가리킵니다.
is_diskbased character(1) 디스크 기반 작업으로서 이번 쿼리 단계의 수행 여부: true(t) 또는 false(f). 해시, 정렬, 집계 단계 같은 특정 단계만 디스크로 갈 수 있습니다. 많은 단계 형식은 항상 메모리에서 수행됩니다.
workmem bigint 쿼리 단계에 할당된 작업 메모리의 양(바이트)입니다. 이 값은 실제로 사용된 메모리 양이 아니라 실행 중에 사용하도록 할당된 query_working_mem 임계값입니다.
is_rrscan character(1) true(t)인 경우, 단계에서 범위 제한 스캔이 사용되었음을 나타냅니다.
is_delayed_scan character(1) true(t)인 경우, 단계에서 지연된 스캔이 사용되었음을 나타냅니다.
rows_pre_filter bigint 영구 테이블 스캔의 경우, 삭제 대기 행(고스트 행)을 필터링하고 사용자 정의 쿼리 필터를 적용하기 전에 내보낸 행의 총수.

샘플 쿼리

다음 쿼리는 쿼리 ID가 279인 쿼리의 반환된 행의 데이터 스큐를 보여 줍니다. 이 쿼리를 사용하여 데이터베이스 데이터가 데이터 웨어하우스 클러스터의 조각들에 고르게 분산되어 있는지 파악합니다.

select query, segment, step, max(rows), min(rows), case when sum(rows) > 0 then ((cast(max(rows) -min(rows) as float)*count(rows))/sum(rows)) else 0 end from svl_query_report where query = 279 group by query, segment, step order by segment, step;

이 쿼리는 다음 샘플 출력과 비슷한 데이터를 반환해야 합니다.

query | segment | step | max | min | case ------+---------+------+----------+----------+---------------------- 279 | 0 | 0 | 19721687 | 19721687 | 0 279 | 0 | 1 | 19721687 | 19721687 | 0 279 | 1 | 0 | 986085 | 986084 | 1.01411202804304e-06 279 | 1 | 1 | 986085 | 986084 | 1.01411202804304e-06 279 | 1 | 4 | 986085 | 986084 | 1.01411202804304e-06 279 | 2 | 0 | 1775517 | 788460 | 1.00098637606408 279 | 2 | 2 | 1775517 | 788460 | 1.00098637606408 279 | 3 | 0 | 1775517 | 788460 | 1.00098637606408 279 | 3 | 2 | 1775517 | 788460 | 1.00098637606408 279 | 3 | 3 | 1775517 | 788460 | 1.00098637606408 279 | 4 | 0 | 1775517 | 788460 | 1.00098637606408 279 | 4 | 1 | 1775517 | 788460 | 1.00098637606408 279 | 4 | 2 | 1 | 1 | 0 279 | 5 | 0 | 1 | 1 | 0 279 | 5 | 1 | 1 | 1 | 0 279 | 6 | 0 | 20 | 20 | 0 279 | 6 | 1 | 1 | 1 | 0 279 | 7 | 0 | 1 | 1 | 0 279 | 7 | 1 | 0 | 0 | 0 (19 rows)