Amazon Redshift Spectrum 사용 모범 사례 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Redshift Spectrum 사용 모범 사례

이 섹션에서는 Amazon Redshift Spectrum 사용에 대한 모범 사례에 대한 개요를 제공합니다. Redshift Spectrum을 사용할 때 최적의 성능을 얻으려면 다음 모범 사례를 따르는 것이 좋습니다.

  • 파일 유형이 Redshift Spectrum 쿼리 성능에 상당한 영향을 미친다고 가정합니다. 성능을 개선하려면 ORC 또는 Parquet와 같은 열 기반 인코딩 파일을 사용하고 매우 작은 차원 테이블에만 CSV 형식을 사용합니다.

  • 접두사 기반 파티셔닝을 사용하여 파티션 정리를 활용합니다. 즉, 데이터 레이크의 파티션에 키가 지정된 필터를 사용해야 합니다.

  • Redshift Spectrum은 대규모 요청을 처리하기 위해 자동으로 확장되므로 Redshift Spectrum에서 가능한 한 많이 조정합니다(예: 조건자 푸시다운).

  • 자주 필터링되는 열의 파티션 파일에 주의하십시오. 데이터가 필터링된 하나 이상의 열로 분할되는 경우 Redshift Spectrum은 파티션 정리를 활용하고 불필요한 파티션 및 파일 스캔을 건너뛸 수 있습니다. 일반적인 관행은 시간을 기준으로 데이터를 파티셔닝하는 것입니다.

  • 다음 쿼리를 사용하여 Redshift Spectrum 쿼리의 파티션 효과와 효율성을 확인할 수 있습니다.

    Select query, segment, max(assigned_partitions) as total_partitions, max(qualified_partitions) as qualified_partitions From svl_s3partition Where query=pg_last_query_id() Group by 1,2;

    이전 쿼리는 다음을 보여줍니다.

    • total_partitions -에서 인식하는 파티션 수 AWS Glue Data Catalog

    • qualified_partitions - Redshift Spectrum 쿼리에 대해 액세스되는 Amazon Simple Storage Service(Amazon S3)의 접두사 수

  • 또한 SVL_S3QUERY_SUMMARY 시스템 테이블을 확인하여 파티션의 효과와 Redshift Spectrum 쿼리의 효율성에 대해 알아볼 수 있습니다. 이렇게 하려면 다음 문을 사용하면 됩니다.

    Select * From svl_s3query_summary Where query=pg_last_query_id();

    앞의 쿼리는 파티션 정리의 효율성을 보여주는 파일 외에도 is_partitioneds3_scanned_rows/bytes, 및 s3_returned_rows/bytes 값을 포함하여 훨씬 더 많은 정보를 반환합니다.

Redshift Spectrum에서 조건부 푸시다운

조건자 푸시다운을 사용하면 Amazon Redshift 클러스터에서 리소스를 사용하지 않습니다. 많은 SQL 작업을 Redshift Spectrum 계층으로 푸시다운할 수 있습니다. 가능하면 이를 활용하는 것이 좋습니다.

다음 사항에 유의하세요.

  • Redshift Spectrum 계층 내에서 다음을 포함하여 일부 유형의 SQL 작업을 완전히 평가할 수 있습니다.

    • GROUP BY

    • 비교 및 패턴 일치 조건(예: LIKE)

    • 집계 함수(예: , COUNT, SUMAVG, 및 MINMAX)

    • regex_replace, to_upperdate_trunc, 및 기타 함수

  • DISTINCT 및를 포함하여 일부 작업을 Redshift Spectrum 계층에 푸시할 수 없습니다ORDER BY. 리더 노드ORDER BY에서 정렬이 수행되므로 가능한 경우 쿼리의 최상위에서만 수행합니다.

  • 쿼리 EXPLAIN 계획을 검토하여 조건자 푸시다운이 효과적인지 확인합니다. EXPLAIN 명령에서 Redshift Spectrum 부분을 찾으려면 다음 단계를 찾습니다.

    • S3 Seq Scan

    • S3 HashAggregate

    • S3 Query Scan

    • Seq Scan PartitionInfo

    • Partition Loop

  • 쿼리에서 가장 적은 수의 열을 사용합니다. Redshift Spectrum은 데이터가 Parquet 또는 ORC 형식인 경우 스캔을 위한 열을 제거할 수 있습니다.

  • 병렬 처리 및 파티션 제거를 위해 파티션을 광범위하게 사용하고 가능한 경우 파일 크기를 최소 64MB로 유지합니다.

  • CREATE EXTERNAL TABLE 또는를 사용하는 TABLE PROPERTIES 'numRows'='nnn' 경우를 설정합니다ALTER TABLE. Amazon Redshift는 외부 테이블을 분석하여 쿼리 최적화 프로그램이 쿼리 계획을 생성하는 데 사용하는 테이블 통계를 생성하지 않습니다. 통계가 설정되지 않은 경우 Amazon Redshift는 외부 테이블이 더 큰 테이블이고 로컬 테이블이 더 작은 테이블이라고 가정합니다.

Redshift Spectrum에 대한 쿼리 튜닝 팁

쿼리를 조정할 때 다음 사항에 유의하는 것이 좋습니다.

  • Amazon Redshift 클러스터가 쿼리에 참여할 수 있는 Redshift Spectrum 노드의 수는 클러스터의 조각 수와 연결됩니다.

  • 클러스터를 확장하면 클러스터의 로컬 컴퓨팅 프로필, 스토리지 프로필 및 Amazon S3 데이터 레이크 쿼리의 쿼리 기능에 도움이 될 수 있습니다.

  • Amazon Redshift 쿼리 플래너는 가능하면 항상 조건자 및 집계를 Redshift Spectrum 쿼리 계층으로 푸시합니다.

  • Amazon S3에서 대량의 데이터가 반환되면 클러스터의 리소스에 의해 처리가 제한됩니다.

  • Redshift Spectrum은 대규모 요청을 처리하기 위해 자동으로 확장되므로 Redshift Spectrum 계층으로 처리를 푸시할 수 있을 때마다 전체 성능이 향상됩니다.