제퍼넷 로고

Amazon Redshift의 다차원 데이터 레이아웃 정렬 키를 사용하여 반복 스캔 필터가 포함된 워크로드의 성능 향상 | 아마존 웹 서비스

시간

아마존 레드 시프트가장 널리 사용되는 클라우드 데이터 웨어하우스인 는 가장 까다로운 워크로드의 성능 요구 사항을 충족하도록 크게 발전했습니다. 이 게시물에서는 그러한 새로운 기능 중 하나인 다차원 데이터 레이아웃 정렬 키를 다룹니다.

Amazon Redshift는 이제 테이블의 물리적 열 대신 필터 조건자를 기준으로 테이블의 데이터를 정렬하는 새로운 유형의 정렬 키인 다차원 데이터 레이아웃 정렬 키를 지원하여 쿼리 성능을 향상시킵니다. 다차원 데이터 레이아웃 정렬 키는 특히 쿼리 워크로드에 반복적인 검색 필터가 포함된 경우 테이블 검색 성능을 크게 향상시킵니다.

Amazon Redshift는 이미 다음과 같은 기능을 제공하고 있습니다. 자동 테이블 최적화 (ATO)는 관리자 개입 없이 정렬 및 배포 키를 적용하여 테이블 디자인을 자동으로 최적화합니다. 이 게시물에서는 ATO에서 제공하고 Amazon Redshift의 정렬 키 조언자 알고리즘으로 강화된 추가 기능으로 다차원 데이터 레이아웃 정렬 키를 소개합니다.

다차원 데이터 레이아웃 정렬 키

AUTO 정렬 키를 사용하여 테이블을 정의하면 Amazon Redshift ATO는 쿼리 기록을 분석하고 워크로드에 더 적합한 옵션에 따라 테이블에 대해 단일 열 정렬 키 또는 다차원 데이터 레이아웃 정렬 키를 자동으로 선택합니다. 다차원 데이터 레이아웃을 선택하면 Amazon Redshift는 일반적으로 동일한 쿼리에 의해 액세스되는 행을 같은 위치에 배치하는 다차원 정렬 기능을 구성하며, 이후 쿼리 실행 중에 정렬 기능을 사용하여 데이터 블록을 건너뛰고 개별 조건자 스캔도 건너뜁니다. 열.

사용자 워크로드에서 주요 쿼리 패턴인 다음 사용자 쿼리를 고려하세요.

SELECT season, sum(metric2) AS "__measure__0"
FROM titles
WHERE lower(subregion) like '%United States%'
GROUP BY 1
ORDER BY 1;

Amazon Redshift는 각 열의 데이터를 1MB 디스크 블록에 저장하고 각 블록의 최소값과 최대값을 테이블 메타데이터의 일부로 저장합니다. 쿼리에서 범위 제한 술어, Amazon Redshift는 최소값과 최대값을 사용하여 테이블 스캔 중에 많은 수의 블록을 빠르게 건너뛸 수 있습니다. 그러나 소지역 열에 대한 이 쿼리의 필터는 최소값과 최대값을 기준으로 건너뛸 블록을 결정하는 데 사용할 수 없으며, 결과적으로 Amazon Redshift는 제목 테이블에서 모든 행을 스캔합니다.

SELECT table_name, input_rows, step_attribute
FROM sys_query_detail
WHERE query_id = 123456789;

사용자의 쿼리가 다음과 같이 실행되었을 때 titles 단일 열 정렬 키를 사용하여 subregion, 이전 쿼리의 결과는 다음과 같습니다.

  table_name | input_rows | step_attribute
-------------+------------+---------------
  titles     | 2164081640 | 
(1 rows)

이는 테이블 스캔이 2,164,081,640개의 행을 읽었음을 보여줍니다.

스캔을 개선하려면 titles 테이블에서 Amazon Redshift는 자동으로 다차원 데이터 레이아웃 정렬 키를 사용하기로 결정할 수 있습니다. 다음을 만족하는 모든 행 lower(subregion) like '%United States%' 조건자는 테이블의 전용 영역에 같은 위치에 배치되므로 Amazon Redshift는 조건자를 충족하는 데이터 블록만 스캔합니다.

사용자의 쿼리가 다음과 같이 실행될 때 titles 다음을 포함하는 다차원 데이터 레이아웃 정렬 키 사용 lower(subregion) like '%United States%' 술어로서, 그 결과 sys_query_detail 쿼리는 다음과 같습니다.

  table_name | input_rows | step_attribute
-------------+------------+---------------
  titles     | 152324046  | multi-dimensional
(1 rows)

이는 테이블 스캔이 원본의 152,324,046%에 불과한 7개의 행을 읽었으며 다차원 데이터 레이아웃 정렬 키를 사용했음을 보여줍니다.

이 예에서는 단일 쿼리를 사용하여 다차원 데이터 레이아웃 기능을 보여 주지만 Amazon Redshift는 테이블에 대해 실행되는 모든 쿼리를 고려하고 가장 일반적으로 실행되는 조건자를 충족하기 위해 여러 지역을 생성할 수 있습니다.

이번에는 더 복잡한 조건자와 여러 쿼리가 포함된 또 다른 예를 들어보겠습니다.

테이블이 있다고 상상해보세요 items (cost int, available int, demand int) 다음 예와 같이 XNUMX개의 행이 있습니다.

#신분증 비용 가능 수요
1 4 3 3
2 2 23 6
3 5 4 5
4 1 1 2

주요 워크로드는 다음 두 가지 쿼리로 구성됩니다.

  • 70% 쿼리 패턴:
    select * from items where cost > 3 and available < demand

  • 20% 쿼리 패턴:
    select avg(cost) from items where available < demand

기존 정렬 기술을 사용하면 비용 열을 기준으로 테이블을 정렬하도록 선택할 수 있습니다. cost > 3 정렬의 혜택을 누릴 것입니다. 따라서 단일 항목을 사용하여 정렬한 후 항목 테이블 cost 열은 다음과 같습니다.

#신분증 비용 가능 수요
지역 #1, 비용 <= 3
지역 #2, 비용 > 3
#신분증 비용 가능 수요
4 1 1 2
2 2 23 6
1 4 3 3
3 5 4 5

이 전통적인 정렬을 사용하면 ID 4와 ID 2의 상위 XNUMX개(파란색) 행을 즉시 제외할 수 있습니다. cost > 3.

반면, 다차원 데이터 레이아웃 정렬 키를 사용하면 테이블은 사용자의 작업 부하에서 일반적으로 발생하는 두 가지 조건자의 조합을 기반으로 정렬됩니다. cost > 3available < demand. 결과적으로 테이블의 행은 XNUMX개의 영역으로 정렬됩니다.

#신분증 비용 가능 수요
지역 #1, 비용 <= 3, 사용 가능 < 수요
지역 #2, 비용 <= 3, 사용 가능 >= 수요
지역 #3, 비용 > 3, 사용 가능 < 수요
지역 #4, 비용 > 3, 사용 가능 >= 수요
#신분증 비용 가능 수요
4 1 1 2
2 2 23 6
3 5 4 5
1 4 3 3

이 개념은 단일 행 대신 전체 블록에 적용될 때, 전통적인 정렬 기술에 적합하지 않은 연산자를 사용하는 복잡한 조건자(예: like), 그리고 두 개 이상의 술어에 적용될 때.

시스템 테이블

다음 Amazon Redshift 시스템 테이블은 테이블과 쿼리에 다차원 데이터 레이아웃이 사용되는지 여부를 사용자에게 보여줍니다.

  • 특정 테이블이 다차원 데이터 레이아웃 정렬 키를 사용하고 있는지 확인하려면 sortkey1 in svv_table_info 동일하다 AUTO(SORTKEY(padb_internal_mddl_key_col)).
  • 특정 쿼리가 다차원 데이터 레이아웃을 사용하여 테이블 스캔을 가속화하는지 확인하려면 다음을 확인하세요. step_attribute FBI 증오 범죄 보고서 sys_query_detail 보다. 값은 다음과 같습니다. multi-dimensional 스캔 중에 테이블의 다차원 데이터 레이아웃 정렬 키가 사용되었는지 여부.

성능 벤치마크

반복 스캔 필터를 사용하여 여러 워크로드에 대해 내부 벤치마크 테스트를 수행한 결과 다차원 데이터 레이아웃 정렬 키를 도입하면 다음과 같은 결과가 생성되는 것으로 나타났습니다.

  • 정렬 키가 없는 경우에 비해 총 런타임이 74% 감소합니다.
  • 각 테이블에서 최고의 단일 열 정렬 키를 갖는 것과 비교하여 총 런타임이 40% 감소합니다.
  • 정렬 키가 없는 경우에 비해 테이블에서 읽은 총 행 수가 80% 감소합니다.
  • 각 테이블에서 최고의 단일 열 정렬 키를 사용하는 것과 비교하여 테이블에서 읽은 총 행이 47% 감소했습니다.

기능 비교

다차원 데이터 레이아웃 정렬 키가 도입되면서 이제 워크로드에서 일반적으로 발생하는 필터 조건자를 기반으로 하는 표현식을 기준으로 테이블을 정렬할 수 있습니다. 다음 표에서는 두 경쟁업체에 대한 Amazon Redshift의 기능 비교를 제공합니다.

특색 아마존 레드 시프트 경쟁자 A 경쟁자 B
열 정렬 지원 가능 가능 가능
표현식별 정렬 지원 가능 가능 아니
정렬을 위한 자동 열 선택 가능 아니 가능
정렬을 위한 자동 표현식 선택 가능 아니 아니
열 정렬 또는 표현식 정렬 간 자동 선택 가능 아니 아니
스캔 중 표현식에 대한 정렬 속성 자동 사용 가능 아니 아니

고려

다차원 데이터 레이아웃을 사용할 때는 다음 사항에 유의하세요.

  • 테이블을 SORTKEY AUTO로 설정하면 다차원 데이터 레이아웃이 활성화됩니다.
  • Amazon Redshift Advisor는 기록 워크로드를 분석하여 테이블에 대해 단일 열 정렬 키 또는 다차원 데이터 레이아웃을 자동으로 선택합니다.
  • Amazon Redshift ATO는 진행 중인 쿼리가 워크로드와 상호 작용하는 방식을 기반으로 다차원 데이터 레이아웃 정렬 결과를 조정합니다.
  • Amazon Redshift ATO는 현재 기존 정렬 키와 동일한 방식으로 다차원 데이터 레이아웃 정렬 키를 유지 관리합니다. 인용하다 자동 테이블 최적화 작업 ATO에 대한 자세한 내용은
  • 다차원 데이터 레이아웃 정렬 키는 프로비저닝된 클러스터와 서버리스 작업 그룹 모두에서 작동합니다.
  • 다차원 데이터 레이아웃 정렬 키는 테이블에 AUTO SORTKEY가 활성화되어 있고 반복 검색 필터가 있는 워크로드가 감지되는 한 기존 데이터와 함께 작동합니다. 다차원 정렬 기능의 결과를 기반으로 테이블이 재구성됩니다.
  • 테이블에 대한 다차원 데이터 레이아웃 정렬 키를 비활성화하려면 alter table을 사용하십시오. ALTER TABLE table_name ALTER SORTKEY NONE. 이렇게 하면 테이블에서 자동 정렬 키 기능이 비활성화됩니다.
  • 다차원 데이터 레이아웃 정렬 키는 프로비저닝된 클러스터를 서버리스 클러스터로 복원하거나 마이그레이션할 때 또는 그 반대로 보존됩니다.

결론

이 게시물에서는 다차원 데이터 레이아웃 정렬 키가 주요 쿼리에 반복 검색 필터가 있는 워크로드의 쿼리 런타임 성능을 크게 향상시킬 수 있음을 보여주었습니다.

Amazon Redshift 콘솔에서 미리 보기 클러스터를 생성하려면 클러스터 페이지를 선택하고 미리보기 클러스터 만들기. 미국 동부(오하이오), 미국 동부(버지니아 북부), 미국 서부(오레곤), 아시아 태평양(도쿄), 유럽(아일랜드) 및 유럽(스톡홀름) 지역에서 클러스터를 생성하고 워크로드를 테스트할 수 있습니다.

우리는 이 새로운 기능에 대한 귀하의 피드백을 듣고 싶고 이 게시물에 대한 귀하의 의견을 기다리겠습니다.


저자 소개

지 옌주 Amazon Redshift 팀의 제품 관리자입니다. 그녀는 업계 최고의 데이터 제품 및 플랫폼에서 제품 비전 및 전략에 대한 경험이 있습니다. 그녀는 웹 개발, 시스템 설계, 데이터베이스 및 분산 프로그래밍 기술을 사용하여 실질적인 소프트웨어 제품을 구축하는 데 뛰어난 기술을 가지고 있습니다. 개인 생활에서 Yanzhu는 그림, 사진, 테니스를 좋아합니다.

마일드 오케 뉴욕에 기반을 둔 데이터 웨어하우스 전문가 솔루션 아키텍트입니다. 그는 15년 이상 데이터 웨어하우스 솔루션을 구축해 왔으며 Amazon Redshift를 전문으로 합니다.

지알린 딩 Amazon Redshift와 같은 데이터 시스템의 성능을 향상시키기 위해 기계 학습 및 최적화 기술을 적용하는 것을 전문으로 하는 Learned Systems Group의 응용 과학자입니다.

spot_img

최신 인텔리전스

spot_img