Amazon Redshift 쿼리 성능 최적화 전략

Q·2024년 5월 9일
0

AWS

목록 보기
11/15

1. 배포 스타일 (Distribution Style)

  • EVEN: 기본값으로, 데이터를 테이블의 모든 슬라이스에 균등하게 분산.
  • KEY: 지정된 컬럼의 값을 기준으로 데이터를 분산. 조인이 자주 발생하는 컬럼에 사용.
  • ALL: 모든 슬라이스에 모든 데이터를 복제. 작은 테이블에 유용.
CREATE TABLE my_table (
    id INT,
    data VARCHAR(255)
)
DISTSTYLE KEY
DISTKEY(id);

2. 정렬 키 (Sort Keys)

  • Compound Sort Key: 지정된 순서대로 정렬. 쿼리에서 정렬 키의 첫 번째 컬럼을 자주 사용할 때 유용.
  • Interleaved Sort Key: 정렬 키의 모든 컬럼에 균등하게 가중치를 부여하여 정렬. 다양한 쿼리에 적합.
CREATE TABLE my_table (
    id INT,
    date TIMESTAMP,
    data VARCHAR(255)
)
COMPOUND SORTKEY (id, date);

3. 압축 인코딩 (Compression Encoding)

  • 컬럼별로 적절한 압축 인코딩을 사용하여 저장 공간을 절약하고 쿼리 성능을 향상.
  • ANALYZE COMPRESSION 명령어를 사용하여 테이블의 최적 인코딩을 추천.
CREATE TABLE my_table (
    id INT ENCODE lzo,
    data VARCHAR(255) ENCODE zstd
);

4. 조인 성능 최적화

  • 조인되는 컬럼에 동일한 배포 스타일을 사용하여 데이터 이동을 최소화.
  • 조인 키에 인덱스를 생성하지 않아도 조인 성능을 최적화할 수 있다.
SELECT a.*, b.*
FROM table_a a
JOIN table_b b ON a.id = b.id
WHERE a.date > '2024-01-01';

5. WLM (Workload Management) 구성

  • WLM을 사용하여 쿼리 성능을 향상시킬 수 있다.
  • 쿼리를 그룹화하고 각 그룹에 리소스를 할당하여 작업을 관리한다.
CREATE TABLE my_table (
    id INT,
    data VARCHAR(255)
)
DISTSTYLE EVEN;

6. 데이터 분할 (Data Distribution)

  • 데이터를 적절히 분할하여 각 슬라이스에 균등하게 분배되도록 한다.
  • 데이터 스키마 설계 시 분할 키와 정렬 키를 신중히 선택합니다.

7. VACUUM 및 ANALYZE 명령어

  • 테이블의 정렬을 유지하고 통계를 최신 상태로 유지하기 위해 VACUUM 및 ANALYZE 명령어를 주기적으로 실행한다.
VACUUM FULL my_table;
ANALYZE my_table;

8. 백업 및 복원

  • Redshift는 자동 스냅샷을 지원하지만, 중요한 데이터를 백업하고 복원 전략을 마련하는 것을 권장.

참고자료

profile
Data Engineer

0개의 댓글