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 문에 추가합니다.