STV_INFLIGHT - Amazon Redshift

STV_INFLIGHT

STV_INFLIGHT 테이블은 클러스터에서 현재 실행 중인 쿼리를 확인하는 데 사용됩니다. 문제를 해결하는 경우 장기 실행 쿼리의 상태를 확인하는 데 유용합니다.

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

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

STV_INFLIGHT를 사용한 문제 해결

쿼리 또는 쿼리 모음에 대한 성능 문제를 해결하기 위해 STV_INFLIGHT를 사용하는 경우 다음 사항에 유의하세요.

  • 장기간 실행 중인 미결 트랜잭션은 일반적으로 부하를 증가시킵니다. 이러한 미결 트랜잭션으로 인해 다른 쿼리의 실행 시간이 길어질 수 있습니다.

  • 장기 실행되는 복사 및 ETL 작업은 많은 컴퓨팅 리소스를 사용하는 경우 클러스터에서 실행 중인 다른 쿼리에 영향을 미칠 수 있습니다. 대부분의 경우 이러한 장기 실행 작업을 사용량이 적은 시간으로 옮기면 보고 또는 분석 워크로드의 성능이 향상됩니다.

  • STV_INFLIGHT와 관련된 정보를 제공하는 뷰가 있습니다. 여기에는 SQL 명령에 대한 쿼리 텍스트를 캡처하는 STL_QUERYTEXT와 STV_INFLIGHT를 SVV_QUERY_INFLIGHT에 조인하는 STL_QUERYTEXT가 포함됩니다. 문제 해결을 위해 STV_RECENTS를 STV_INFLIGHT와 함께 사용할 수도 있습니다. 예를 들어 STV_RECENTS는 특정 쿼리가 실행 중 또는 완료 상태에 있는지 여부를 나타낼 수 있습니다. 이 정보를 STV_INFLIGHT의 결과와 결합하면 쿼리의 속성 및 컴퓨팅 리소스 영향에 대한 자세한 정보를 얻을 수 있습니다.

Amazon Redshift 콘솔을 사용하여 실행 중인 쿼리를 모니터링할 수도 있습니다.

테이블 열

열 명칭 데이터 유형 설명
userid 정수 항목을 생성한 사용자의 ID.
slice 정수 쿼리가 실행 중인 조각.
쿼리 정수 쿼리 ID. 다양한 다른 시스템 테이블 및 보기를 조인하는 데 사용할 수 있습니다.
레이블 character(320) 쿼리 실행에 사용되는 파일의 이름 또는 SET QUERY_GROUP 명령을 사용하여 정의되는 레이블. 쿼리가 파일 기반이 아니거나 QUERY_GROUP 파라미터가 설정되지 않은 경우, 이 필드의 값은 공백입니다.
xid bigint 트랜잭션 ID.
pid 정수 프로세스 ID. 한 세션의 모든 쿼리는 동일 프로세스에서 실행되므로 동일 세션에서 일련의 쿼리를 실행하는 경우, 이 값은 항상 같은 값을 유지합니다. 이 열을 사용하여 STL_ERROR 테이블에 조인할 수 있습니다.
starttime 타임스탬프 쿼리가 시작된 시간.
텍스트 character(100) 쿼리 텍스트. 문이 제한을 초과하면 100자까지 잘립니다.
suspended 정수 쿼리가 일시 중지되었는지 여부. 0 = false, 1 = true.
insert_pristine 정수 현재 쿼리를 지금/이전에 실행했을 때 쓰기 쿼리를 지금/이전에 실행할 수 있는 여부입니다. 1 = 쓰기 쿼리가 허용되지 않음. 0 = 쓰기 쿼리가 허용됨. 이 열은 디버깅 시 사용하도록 되어 있습니다.
concurrency_scaling_status 정수

쿼리가 기본 클러스터에서 실행되었는지 아니면 동시성 확장 클러스터에서 실행되었는지를 나타냅니다. 가능한 값은 다음과 같습니다.

0 - 기본 클러스터에서 실행되었습니다.

1 - 동시성 확장 클러스터에서 실행되었습니다.

샘플 쿼리

현재 데이터베이스에서 활성화되어 실행 중인 모든 쿼리를 확인하려면 다음과 같이 쿼리를 입력합니다.

select * from stv_inflight;

아래 샘플 출력은 STV_INFLIGHT 쿼리 자체와 이름이 avgwait.sql인 스크립트에서 실행된 쿼리를 포함하여 현재 2개의 쿼리가 실행 중인 것을 나타냅니다.

select slice, query, trim(label) querylabel, pid, starttime, substring(text,1,20) querytext from stv_inflight; slice|query|querylabel | pid | starttime | querytext -----+-----+-----------+-----+--------------------------+-------------------- 1011 | 21 | | 646 |2012-01-26 13:23:15.645503|select slice, query, 1011 | 20 |avgwait.sql| 499 |2012-01-26 13:23:14.159912|select avg(datediff( (2 rows)

다음 쿼리는 concurrency_scaling_status를 포함한 여러 열을 선택합니다. 이 열은 쿼리가 동시성 확장 클러스터로 전송되고 있는지 여부를 나타냅니다. 일부 결과에 대해 값이 1이면 동시성 규모 조정 컴퓨팅 리소스가 사용 중임을 나타냅니다. 자세한 내용은 동시성 확장 작업 단원을 참조하십시오.

select userid, query, pid, starttime, text, suspended, concurrency_scaling_status from STV_INFLIGHT;

샘플 출력은 동시성 규모 조정 클러스터로 전송되는 쿼리 하나를 보여줍니다.

query | pid | starttime | text | suspended | concurrency_scaling_status --------+---------+----------------------------|------------------------|---------------|------------------------------- 1234567 | 123456 | 2012-01-26 13:23:15.645503 | select userid, query... 0 1 2345678 | 234567 | 2012-01-26 13:23:14.159912 | select avg(datediff(... 0 0 (2 rows)

쿼리 성능 문제 해결에 대한 자세한 팁은 쿼리 문제 해결을 참조하세요.