STL_ALERT_EVENT_LOG - Amazon Redshift

STL_ALERT_EVENT_LOG

쿼리 옵티마이저에서 성능 문제를 야기할 수 있는 조건이 식별되면 알림 메시지가 기록됩니다. STL_ALERT_EVENT_LOG 뷰는 쿼리 성능을 높일 수 있는 방법을 찾는 데 사용됩니다.

하나의 쿼리는 여러 세그먼트로 구성되며, 각각의 세그먼트는 하나 이상의 단계로 구성됩니다. 자세한 내용은 쿼리 처리 단원을 참조하십시오.

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

참고

STL_ALERT_EVENT_LOG에는 기본 클러스터에서 실행되는 쿼리만 포함됩니다. 동시성 조정 클러스터에서 실행되는 쿼리는 포함되지 않습니다. 기본 및 동시성 조정 클러스터 모두에서 실행되는 쿼리에 액세스하려면 SYS 모니터링 뷰인 SYS_QUERY_DETAIL을 사용하는 것이 좋습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다.

테이블 열

열 명칭 데이터 유형 설명
userid 정수 항목을 생성한 사용자의 ID.
쿼리 정수 쿼리 ID. 쿼리 열을 사용하여 다른 시스템 테이블 및 보기를 조인할 수 있습니다.
slice 정수 쿼리가 실행 중인 슬라이스를 식별하는 번호.
segment 정수 쿼리 세그먼트를 식별할 수 있는 번호
step 정수 실행된 쿼리 단계입니다.
pid 정수 쿼리 문 및 조각과 연결된 프로세스 ID. 동일한 쿼리가 다수의 조각에서 실행되는 경우에는 다수의 PID를 가질 수 있습니다.
xid bigint 문에 연결된 트랜잭션 ID.
이벤트 character(1024) 알림 이벤트에 대한 설명
solution character(1024) 권장 솔루션
event_time 타임스탬프 쿼리 시작 시간(UTC) 총 시간에는 대기 및 실행이 포함되며 소수점 이하 자릿수는 6자리입니다. 예: 2009-06-12 11:29:19.131358.

사용 노트

STL_ALERT_EVENT_LOG는 쿼리에서 잠재적 문제를 식별한 후 쿼리 성능 튜닝의 모범 사례에 따라 데이터베이스 설계를 최적화하여 쿼리를 재작성하는 데 사용할 수 있습니다. STL_ALERT_EVENT_LOG는 다음과 같은 알림을 기록합니다.

  • 통계 누락

    통계가 누락된 경우에는 데이터 로드 또는 중요한 업데이트에 이어 ANALYZE를 실행한 다음 COPY 작업에 STATUPDATE를 사용하십시오. 자세한 내용은 Amazon Redshift 쿼리 설계 모범 사례 단원을 참조하십시오.

  • 중첩 루프

    중첩 루프는 일반적으로 데카르트 곱입니다. 이때는 쿼리를 평가하여 참여하는 테이블이 모두 효율적으로 조인되었는지 확인하십시오.

  • 선택의 폭이 제한적인 필터

    반환되는 행과 스캔되는 행의 비율은 0.05미만입니다. 스캔되는 행은 rows_pre_user_filter 값이고, 반환되는 행은 STL_SCAN 시스템 뷰의 rows 값입니다. 이 알림은 쿼리가 결과 집합을 확인하기 위해 비정상적으로 많은 수의 행을 스캔하고 있다는 것을 의미합니다. 이러한 문제는 정렬 키가 누락되었거나 잘못되었을 때 발생할 수 있습니다. 자세한 내용은 정렬 키 단원을 참조하십시오.

  • 지나치게 많은 고스트 행

    스캔 작업이 정리가 아닌 삭제된 것으로 표시되었거나, 혹은 커밋되지 않고 삽입된 비교적 다수의 행을 건너뛰었습니다. 자세한 내용은 테이블 Vacuum 단원을 참조하십시오.

  • 다수의 행 분산

    100만 개가 넘는 행이 해시 조인 또는 집계를 위해 재분산되었습니다. 자세한 내용은 쿼리 최적화를 위한 데이터 배포 단원을 참조하십시오.

  • 다수의 행 브로드캐스팅

    100만 개가 넘는 행이 해시 조인을 위해 브로드캐스팅되었습니다. 자세한 내용은 쿼리 최적화를 위한 데이터 배포 단원을 참조하십시오.

  • 직렬 실행

    쿼리 계획에서 DS_DIST_ALL_INNER 재분산 스타일이 지정되면서 내부 테이블 전체가 단일 조각으로 재분산되었기 때문에 직렬 실행을 피할 수 없습니다. 자세한 내용은 쿼리 최적화를 위한 데이터 배포 단원을 참조하십시오.

샘플 쿼리

다음은 4개 쿼리의 알림 이벤트를 나타낸 쿼리입니다.

SELECT query, substring(event,0,25) as event, substring(solution,0,25) as solution, trim(event_time) as event_time from stl_alert_event_log order by query; query | event | solution | event_time -------+-------------------------------+------------------------------+--------------------- 6567 | Missing query planner statist | Run the ANALYZE command | 2014-01-03 18:20:58 7450 | Scanned a large number of del | Run the VACUUM command to rec| 2014-01-03 21:19:31 8406 | Nested Loop Join in the query | Review the join predicates to| 2014-01-04 00:34:22 29512 | Very selective query filter:r | Review the choice of sort key| 2014-01-06 22:00:00 (4 rows)