쿼리 계획 분석 - Amazon Redshift

쿼리 계획 분석

쿼리 계획을 분석하려면 먼저 쿼리 계획을 읽는 방법부터 알아야 합니다. 쿼리 계획을 읽는 방법에 대해서 잘 모르는 경우에는 본 섹션을 진행하기 전에 쿼리 계획부터 읽는 것이 좋습니다.

EXPLAIN 명령을 실행하여 쿼리 계획을 가져온 후 다음 단계에 따라 쿼리 계획에서 출력되는 데이터를 분석합니다.

  1. 비용이 가장 높은 단계를 식별합니다. 나머지 단계를 진행하면서 식별된 단계를 최적화하는 데 집중해야 합니다.

  2. 조인 유형을 살펴봅니다.

    • 중첩 루프: 이 조인이 주로 조인 조건이 생략되었을 때 발생합니다. 권장 솔루션은 중첩 루프 섹션을 참조하세요.

    • 해시 및 해시 조인: 해시 조인은 조인 열이 분산 키와 정렬 키가 아닌 테이블을 조인할 때 사용됩니다. 권장 솔루션은 해시 조인 섹션을 참조하세요.

    • 병합 조인: 변경할 필요 없습니다.

  3. 내부 조인과 외부 조인에 어떤 테이블이 사용되는지 확인합니다. 쿼리 엔진은 일반적으로 작은 테이블을 내부 조인 용도로, 그리고 큰 테이블을 외부 조인 용도로 선택합니다. 이러한 선택과 다르다면 통계가 오랜 시간이 지났을 가능성이 높습니다. 권장 솔루션은 테이블 통계 누락 또는 만료 섹션을 참조하세요.

  4. 비용이 높은 정렬 작업 유무를 확인합니다. 있을 경우 권장 솔루션은 정렬되지 않았거나 잘못 정렬된 행 섹션을 참조하세요.

  5. 비용이 높은 작업이 있을 경우 다음과 같은 브로드캐스팅 연산자를 찾습니다.

    • DS_BCAST_INNER: 테이블이 모든 컴퓨팅 노드에 브로드캐스트되는지 나타냅니다. 이는 작은 테이블에는 좋지만 더 큰 테이블에는 이상적이지 않습니다.

    • DS_DIST_ALL_INNER: 모든 워크로드가 단일 조각으로 재분산되는 것을 의미합니다.

    • DS_DIST_BOTH: 과다한 재분산을 의미합니다.

    각 상황에 대한 권장 솔루션은 최적이 아닌 데이터 분산 섹션을 참조하세요.