구체화된 뷰를 사용하기 위한 자동 쿼리 재작성 - Amazon Redshift

구체화된 뷰를 사용하기 위한 자동 쿼리 재작성

Amazon Redshift에서 구체화된 뷰의 자동 쿼리 재작성을 사용하여 Amazon Redshift가 구체화된 뷰를 사용하도록 쿼리를 재작성하도록 할 수 있습니다. 이렇게 하면 구체화된 뷰를 명시적으로 참조하지 않는 쿼리의 경우에도 쿼리 워크로드가 가속화됩니다. Amazon Redshift는 쿼리를 재작성할 때 최신 구체화된 보기만 사용합니다.

사용 노트

쿼리 자동 재작성이 쿼리에 사용되는지 확인하려면 쿼리 계획 또는 STL_EXPLAIN을 검사합니다. 다음은 SELECT 문과 원래 쿼리 계획의 EXPLAIN 출력을 보여줍니다.

SELECT catgroup, SUM(qtysold) AS sold FROM category c, event e, sales s WHERE c.catid = e.catid AND e.eventid = s.eventid GROUP BY 1; EXPLAIN XN HashAggregate (cost=920021.24..920021.24 rows=1 width=35) -> XN Hash Join DS_BCAST_INNER (cost=440004.53..920021.22 rows=4 width=35) Hash Cond: ("outer".eventid = "inner".eventid) -> XN Seq Scan on sales s (cost=0.00..7.40 rows=740 width=6) -> XN Hash (cost=440004.52..440004.52 rows=1 width=37) -> XN Hash Join DS_BCAST_INNER (cost=0.01..440004.52 rows=1 width=37) Hash Cond: ("outer".catid = "inner".catid) -> XN Seq Scan on event e (cost=0.00..2.00 rows=200 width=6) -> XN Hash (cost=0.01..0.01 rows=1 width=35) -> XN Seq Scan on category c (cost=0.00..0.01 rows=1 width=35)

다음은 성공적인 자동 재작성 후 EXPLAIN 출력을 보여줍니다. 이 출력에는 원래 쿼리 계획의 일부를 대체하는 쿼리 계획의 구체화된 뷰에 대한 스캔이 포함됩니다.

* EXPLAIN XN HashAggregate (cost=11.85..12.35 rows=200 width=41) -> XN Seq Scan on mv_tbl__tickets_mv__0 derived_table1 (cost=0.00..7.90 rows=790 width=41)

자동, 예약 또는 수동과 같은 새로 고침 전략에 관계없이 쿼리의 자동 재작성을 위해 최신(새로운) 구체화된 뷰만 고려됩니다. 따라서 원래 쿼리는 최신 결과를 반환합니다. 구체화된 뷰가 쿼리에서 명시적으로 참조되는 경우 Amazon Redshift는 구체화된 뷰에 현재 저장된 데이터에 액세스합니다. 이 데이터는 구체화된 뷰의 기본 테이블에서 최신 변경 사항을 반영하지 않을 수 있습니다.

클러스터 버전 1.0.20949 이상에서 생성된 구체화된 뷰의 자동 쿼리 재작성을 사용할 수 있습니다.

FALSE로 SET mv_enable_aqmv_for_session을 사용하여 세션 수준에서 자동 쿼리 재작성을 중지할 수 있습니다.

제한 사항

다음은 구체화된 뷰의 자동 쿼리 재작성 사용에 대한 제한 사항입니다.

  • 자동 쿼리 재작성은 다음 중 하나를 참조하거나 포함하지 않는 구체화된 뷰에서 작동합니다.

    • 하위 쿼리

    • 왼쪽, 오른쪽 또는 전체 외부 조인

    • 설정 연산

    • SUM, COUNT, MIN, MAX, AVG를 제외한 모든 집계 함수. (이런 집계 함수에서만 자동 쿼리 재작성이 작동합니다.)

    • DISTINCT가 포함된 모든 집계 함수

    • 모든 윈도 함수

    • SELECT DISTINCT 또는 HAVING 절

    • 외부 테이블

    • 다른 구체화된 뷰

  • 자동 쿼리 재작성은 사용자 정의 Amazon Redshift 테이블을 참조하는 SELECT 쿼리를 재작성합니다. Amazon Redshift는 다음 쿼리를 재작성하지 않습니다.

    • CREATE TABLE AS 문

    • SELECT INTO 문

    • 카탈로그 또는 시스템 테이블에 대한 쿼리

    • 외부 조인 또는 SELECT DISTINCT 절이 있는 쿼리

  • 쿼리가 자동으로 재작성되지 않는 경우 지정된 구체화된 뷰에 대한 SELECT 권한이 있고 mv_enable_aqmv_for_session 옵션이 TRUE로 설정되어 있는지 확인합니다.

    STV_MV_INFO를 검사하여 구체화된 뷰가 쿼리 자동 재작성에 적합한지 확인할 수도 있습니다. 자세한 내용은 STV_MV_INFO 단원을 참조하십시오.