STV_RECENTS
STV_RECENTS 테이블은 데이터베이스에서 현재 활성 쿼리와 최근에 실행한 쿼리에 대한 정보를 확인하는 데 사용됩니다.
STV_RECENTS는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 단원을 참조하십시오.
이 테이블의 데이터 중 일부 또는 전부는 SYS 모니터링 뷰인 SYS_QUERY_HISTORY에서도 찾아볼 수 있습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다. 쿼리에 SYS 모니터링 뷰를 사용하는 것이 좋습니다.
STV_RECENTS를 사용한 문제 해결
STV_RECENTS는 쿼리 또는 쿼리 모음이 현재 실행 중인지 또는 완료되었는지 확인하는 데 특히 유용합니다. 또한 쿼리가 실행된 기간도 표시됩니다. 이는 어떤 쿼리가 오래 실행되는지 파악하는 데 유용합니다.
STV_RECENTS를 STV_INFLIGHT와 같은 다른 시스템 보기에 조인하여 실행 중인 쿼리에 대한 추가 메타데이터를 수집할 수 있습니다. (샘플 쿼리 섹션에 이 작업을 수행하는 방법을 보여주는 예가 있습니다.) 또한 이 뷰에서 반환된 레코드를 Amazon Redshift 콘솔의 모니터링 기능과 함께 사용하여 실시간으로 문제 해결을 할 수도 있습니다.
STV_RECENTS를 보완하는 시스템 뷰에는 SQL 명령에 대한 쿼리 텍스트를 검색하는 SVV_QUERY_INFLIGHT와 STV_INFLIGHT를 STL_QUERYTEXT에 조인하는 STL_QUERYTEXT가 포함됩니다.
테이블 열
열 명칭 | 데이터 유형 | 설명 |
---|---|---|
userid | 정수 | 항목을 생성한 사용자의 ID. |
status | character(20) | 쿼리 상태. 유효 값은 Running , Done 입니다. |
starttime | 타임스탬프 | 쿼리가 시작된 시간입니다. |
기간 | 정수 | 세션 시작 후 경과 시간(마이크로초) |
user_name | character(50) | 프로세스를 실행한 사용자 이름 |
db_name | character(50) | 데이터베이스 이름 |
쿼리 | character(600) | 최대 600자의 쿼리 텍스트. 그 외에 추가되는 문자는 모두 잘립니다. |
pid | 정수 | 쿼리와 연결된 세션의 프로세스 ID이며, 완료된 쿼리는 항상 -1입니다. |
샘플 쿼리
현재 데이터베이스에서 실행 중인 쿼리를 확인하려면 다음과 같이 쿼리를 실행합니다.
select user_name, db_name, pid, query from stv_recents where status = 'Running';
아래 샘플 출력은 TICKIT 데이터베이스에서 실행 중인 쿼리가 하나인 것을 나타냅니다.
user_name | db_name | pid | query ----------+---------+---------+------------- dwuser | tickit | 19996 |select venuename, venueseats from venue where venueseats > 50000 order by venueseats desc;
다음은 실행 중이거나 대기열에서 실행 대기 중인 쿼리 목록(있는 경우)을 반환하는 예입니다.
select * from stv_recents where status<>'Done'; status | starttime | duration |user_name|db_name| query | pid -------+---------------------+----------+---------+-------+-----------+------ Running| 2010-04-21 16:11... | 281566454| dwuser |tickit | select ...| 23347
다수의 쿼리를 동시에 실행하면서 일부 쿼리가 대기열에서 대기 중인 경우가 아니라면 위 쿼리에서 아무런 결과도 반환되지 않습니다.
다음은 위의 예를 확장한 예입니다. 이 경우에는 실제로 "진행 중"(대기가 아닌 실행 중)인 쿼리가 결과에서 제외됩니다.
select * from stv_recents where status<>'Done' and pid not in (select pid from stv_inflight); ...
쿼리 성능 문제 해결에 대한 자세한 팁은 쿼리 문제 해결을 참조하세요.