SVV_QUERY_STATE
SVV_QUERY_STATE를 사용하여 현재 실행 중인 쿼리의 런타임에 관한 정보를 확인합니다.
SVV_QUERY_STATE 뷰에는 STV_EXEC_STATE 테이블의 데이터 하위 집합이 포함됩니다.
SVV_QUERY_STATE는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.
이 테이블의 데이터 중 일부 또는 전부는 SYS 모니터링 뷰인 SYS_QUERY_DETAIL에서도 찾아볼 수 있습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다. 쿼리에 SYS 모니터링 뷰를 사용하는 것이 좋습니다.
참고
이 보기는 프로비저닝된 클러스터를 쿼리할 때만 사용할 수 있습니다.
테이블 열
열 명칭 | 데이터 유형 | 설명 |
---|---|---|
userid | 정수 | 항목을 생성한 사용자의 ID. |
쿼리 | 정수 | 쿼리 ID. 다양한 다른 시스템 테이블 및 보기를 조인하는 데 사용할 수 있습니다. |
seg | 정수 | 실행 중인 쿼리 세그먼트의 수. 하나의 쿼리는 여러 세그먼트로 구성되며, 각각의 세그먼트는 하나 이상의 단계로 구성됩니다. 쿼리 세그먼트는 병렬로 실행될 수 있습니다. 각 세그먼트는 단일 프로세스에서 실행됩니다. |
step | 정수 | 실행 중인 쿼리 단계의 수. 단계는 최소 쿼리 런타임 단위입니다. 각 단계는 테이블 스캔, 결과 반환 또는 데이터 정렬 같은 개별적 작업 단위를 나타냅니다. |
maxtime | interval | 이 단계가 실행되기 위한 최대 시간(마이크로초)입니다. |
avgtime | interval | 이 단계가 실행되기 위한 평균 시간(마이크로초)입니다. |
rows | bigint | 실행 중인 단계에 의해 만들어진 행의 수. |
bytes | bigint | 실행 중인 단계에 의해 만들어진 바이트의 수. |
cpu | bigint | 내부용. |
memory | bigint | 내부용. |
rate_row | double precision | 쿼리가 시작된 이후의 초당 행 속도로서 행을 합산해 쿼리가 시작된 때부터 현재 시간까지의 초로 나누어 계산합니다. |
rate_byte | double precision | 쿼리가 시작된 이후의 초당 바이트 속도로서 바이트를 합산해 쿼리가 시작된 때부터 현재 시간까지의 초로 나누어 계산합니다. |
레이블 | character(25) | 쿼리 레이블: scan 또는 sort 와 같은 단계의 이름. |
is_diskbased | character(1) | 쿼리의 이 단계가 디스크 기반 작업으로 실행 중인지 여부: true(t ) 또는 false(f ). 해시, 정렬, 집계 단계 같은 특정 단계만 디스크로 갈 수 있습니다. 많은 단계 형식은 항상 메모리에서 수행됩니다. |
workmem | bigint | 쿼리 단계에 할당된 작업 메모리의 양(바이트)입니다. |
num_parts | 정수 | 해시 단계 도중 해시 테이블이 분할되는 파티션의 수. 이 열의 양수는 해시 단계가 디스크 기반 작업으로 실행되었음을 뜻하지 않습니다. 해시 단계가 디스크 기반인지 확인하려면 IS_DISKBASED 열의 값을 확인합니다. |
is_rrscan | character(1) | true(t )인 경우, 단계에서 범위 제한 스캔이 사용되었음을 나타냅니다. 기본값은 false(f )입니다. |
is_delayed_scan | character(1) | true(t )인 경우, 단계에서 지연된 스캔이 사용되었음을 나타냅니다. 기본값은 false(f )입니다. |
샘플 쿼리
단계별 쿼리 처리 시간 확인
다음 쿼리는 쿼리 ID 279인 쿼리의 각 단계가 실행되는 데 걸린 시간과 Amazon Redshift가 처리한 데이터 행의 수를 보여줍니다.
select query, seg, step, maxtime, avgtime, rows, label from svv_query_state where query = 279 order by query, seg, step;
이 쿼리는 다음 샘플 출력에서 보듯 쿼리 279에 대한 처리 정보를 검색합니다.
query | seg | step | maxtime | avgtime | rows | label ------+---------+------+---------+---------+---------+------------------- 279 | 3 | 0 | 1658054 | 1645711 | 1405360 | scan 279 | 3 | 1 | 1658072 | 1645809 | 0 | project 279 | 3 | 2 | 1658074 | 1645812 | 1405434 | insert 279 | 3 | 3 | 1658080 | 1645816 | 1405437 | distribute 279 | 4 | 0 | 1677443 | 1666189 | 1268431 | scan 279 | 4 | 1 | 1677446 | 1666192 | 1268434 | insert 279 | 4 | 2 | 1677451 | 1666195 | 0 | aggr (7 rows)
디스크에서 현재 실행 중인 활성 쿼리가 있는지 확인
다음 쿼리는 디스크에서 현재 실행 중인 활성 쿼리가 있는지 보여 줍니다.
select query, label, is_diskbased from svv_query_state where is_diskbased = 't';
이 샘플 출력은 디스크에서 현재 실행 중인 모든 활성 쿼리를 보여 줍니다.
query | label | is_diskbased -------+--------------+-------------- 1025 | hash tbl=142 | t (1 row)