SVL_QUERY_SUMMARY - Amazon Redshift

SVL_QUERY_SUMMARY

SVL_QUERY_SUMMARY 뷰를 사용하여 쿼리 실행에 대한 일반 정보를 찾습니다.

SVV_QUERY_SUMMARY 뷰에는 SVL_QUERY_REPORT 뷰의 데이터 하위 집합이 포함됩니다. SVL_QUERY_SUMMARY의 정보는 모든 노드에서 집계됩니다.

참고

SVL_QUERY_SUMMARY 보기에는 Amazon Redshift가 수행하는 쿼리에 대한 정보만 포함되며 다른 유틸리티 및 DDL 명령이 실행하는 쿼리의 정보는 포함되지 않습니다. DDL 및 유틸리티 명령을 포함하여 Amazon Redshift에 의해 수행되는 모든 문의 전체 목록과 정보를 보려면 SVL_STATEMENTTEXT 보기를 쿼리할 수 있습니다.

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

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

SVCS_QUERY_SUMMARY에 대한 자세한 내용은 SVCS_QUERY_SUMMARY 섹션을 참조하세요.

테이블 열

열 명칭 데이터 유형 설명
userid 정수 항목을 생성한 사용자의 ID.
쿼리 정수 쿼리 ID. 다양한 다른 시스템 테이블 및 보기를 조인하는 데 사용할 수 있습니다.
stm 정수 스트림: 한 쿼리 내의 동시 세그먼트의 집합. 쿼리에는 하나 이상의 스트림이 있습니다.
seg 정수 세그먼트 번호. 하나의 쿼리는 여러 세그먼트로 구성되며, 각각의 세그먼트는 하나 이상의 단계로 구성됩니다. 쿼리 세그먼트는 병렬로 실행될 수 있습니다. 각 세그먼트는 단일 프로세스에서 실행됩니다.
step 정수 실행된 쿼리 단계입니다.
maxtime bigint 단계가 실행되기 위한 최대 시간(마이크로초)입니다.
avgtime bigint 단계가 실행되기 위한 평균 시간(마이크로초)입니다.
rows bigint 쿼리 단계에 연관된 데이터 행의 수.
bytes bigint 쿼리 단계에 연관된 데이터 바이트의 수.
rate_row double precision 행당 쿼리 실행 속도.
rate_byte double precision 바이트당 쿼리 실행 속도.
레이블 텍스트 쿼리 단계 이름 및 해당되는 경우, 테이블 ID와 테이블 이름으로 구성되는 단계 레이블(예: scan tbl=100448 name =user). 3자리 테이블 ID는 일반적으로 일시적 테이블의 스캔을 가리킵니다. tbl=0이 표시된다면 일반적으로 일정한 값의 스캔을 가리킵니다.
is_diskbased character(1) 쿼리의 이 단계가 클러스터의 노드에서 디스크 기반 작업으로 수행되었는지 여부입니다(true(t) 또는 false(f)). 해시, 정렬, 집계 단계 같은 특정 단계만 디스크로 갈 수 있습니다. 많은 단계 형식은 항상 메모리에서 수행됩니다.
workmem bigint 쿼리 단계에 할당된 작업 메모리의 양(바이트)입니다.
is_rrscan character(1) true(t)인 경우, 단계에서 범위 제한 스캔이 사용되었음을 나타냅니다. 기본값은 false(f)입니다.
is_delayed_scan character(1) true(t)인 경우, 단계에서 지연된 스캔이 사용되었음을 나타냅니다. 기본값은 false(f)입니다.
rows_pre_filter bigint 영구 테이블 스캔의 경우, 삭제 대기 행(고스트 행)을 필터링하기 전에 내보낸 행의 총수.

샘플 쿼리

쿼리 단계의 처리 정보 확인

다음 쿼리는 쿼리 87의 각 단계에 대한 기본적 처리 정보를 보여 줍니다.

select query, stm, seg, step, rows, bytes from svl_query_summary where query = 87 order by query, seg, step;

이 쿼리는 다음 샘플 출력에서 보듯 쿼리 87에 대한 처리 정보를 검색합니다.

query | stm | seg | step | rows | bytes -------+-----+-----+------+--------+--------- 87 | 0 | 0 | 0 | 90 | 1890 87 | 0 | 0 | 2 | 90 | 360 87 | 0 | 1 | 0 | 90 | 360 87 | 0 | 1 | 2 | 90 | 1440 87 | 1 | 2 | 0 | 210494 | 4209880 87 | 1 | 2 | 3 | 89500 | 0 87 | 1 | 2 | 6 | 4 | 96 87 | 2 | 3 | 0 | 4 | 96 87 | 2 | 3 | 1 | 4 | 96 87 | 2 | 4 | 0 | 4 | 96 87 | 2 | 4 | 1 | 1 | 24 87 | 3 | 5 | 0 | 1 | 24 87 | 3 | 5 | 4 | 0 | 0 (13 rows)

쿼리 단계가 디스크에 분산되었는지 여부 확인

다음 쿼리는 쿼리 ID 1025(쿼리의 쿼리 ID를 얻는 방법을 확인하려면 SVL_QLOG 뷰를 참조)인 쿼리의 단계가 디스크로 분산되었는지 또는 쿼리가 전적으로 메모리에서 실행되었는지 여부를 보여 줍니다.

select query, step, rows, workmem, label, is_diskbased from svl_query_summary where query = 1025 order by workmem desc;

위 쿼리는 다음과 같은 샘플 출력을 반환합니다.

query| step| rows | workmem | label | is_diskbased -----+-----+--------+-----------+---------------+-------------- 1025 | 0 |16000000| 141557760 |scan tbl=9 | f 1025 | 2 |16000000| 135266304 |hash tbl=142 | t 1025 | 0 |16000000| 128974848 |scan tbl=116536| f 1025 | 2 |16000000| 122683392 |dist | f (4 rows)

IS_DISKBASED의 값을 스캔하면 어떤 쿼리 단계가 디스크로 갔는지 알 수 있습니다. 쿼리 1025의 경우, 해시 단계가 디스크에서 실행되었습니다. 디스크에서 실행될 수 있는 단계에는 hash, aggr, sort 단계가 포함됩니다. 디스크 기반 쿼리 단계만 보려면 위의 예에서 and is_diskbased = 't' 절을 SQL 문에 추가합니다.