2016-10-20 1 views

답변

5

아니요,이 작업을 수행하려고합니다. 아마존 Redshift에있어서

상기 ( DISTKEY) 키가 조각 사이에 데이터를 분배하는데 사용되는 분배 (노드 당 존재 다중 분할). 쿼리가 DISTKEY를 사용하여 두 테이블을 조인 할 때 키와 관련된 두 테이블의 데이터가 동일한 슬라이스에 있기 때문에 훨씬 빠르게 실행됩니다. 슬라이스간에 데이터를 이동할 필요가 없으며 슬라이스가 병렬로 작동 할 수 있습니다. DISTKEY는 가장 자주 사용하는 필드이며 JOIN 테이블을 함께 사용해야합니다.

또한 정렬 키 (SORTKEY)은 조각에 저장된 데이터를 정렬합니다. WHERE 절에서이 SORTKEY를 사용하는 쿼리는 쿼리가 디스크의 블록을 건너 뛰기 때문에 더 효율적으로 작동합니다. 각 1MB 디스크 블록에는 하나의 테이블에있는 하나의 열에 관련된 값이 들어 있습니다. 각 블록에는 블록의 최소값과 최대 값을 식별하는 영역 맵 이 있습니다. 블록에 WHERE 절과 일치하는 값이 없으면 Redshift는 블록을 읽을 필요가 없습니다. 이로 인해 쿼리가 매우 빨라졌습니다.

그래서, 대부분의 쿼리 분기 데이터 경우에, 당신은 타임 스탬프 필드에 테이블의 SORTKEY을 설정해야합니다. 이렇게하면 모든 슬라이스가 관련없는 디스크 블록을 건너 뛰면서 동시에 데이터를 처리 할 수 ​​있습니다. DISTKEY에 날짜 값을 사용하지 마십시오. 결과적으로 한 조각 만 쿼리를 수행하면 느리게 실행됩니다. 대신 DISTKEY를 주로 다른 테이블 (예 : 고객 ID)과 조인 할 때 사용하는 것으로 설정하십시오.

+0

감사합니다. 자세한 설명을 위해. 여러 노드를 통해 데이터가 분산되는 방식을 이해시켜 주시겠습니까? 배포 스타일이 성능에 어떤 영향을 미칠 수 있습니까? – imVJ

+0

문서 : [최상의 배포 스타일 선택] (https://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-best-dist-key.html) 및 [배포 예] (https :// /docs.aws.amazon.com/redshift/latest/dg/c_Distribution_examples.html). 또한 [AWS Summit의 Redshift 프레젠테이션] (https://aws.amazon.com/summits/sydney/on-demand/)을 시청하는 것이 좋으며, 이는 데이터 배포에 대한 시각적 비유를 제공합니다. –

관련 문제