비용 기반 최적화 프로그램 사용 - Amazon Athena

비용 기반 최적화 프로그램 사용

Athena SQL의 비용 기반 최적화 프로그램(CBO) 기능을 사용하여 쿼리를 최적화할 수 있습니다. AWS Glue의 테이블 중 하나에 대해 Athena가 테이블 또는 열 수준의 통계를 수집하도록 요청할 수도 있습니다. 쿼리의 모든 테이블에 통계가 있는 경우 Athena는 통계를 사용하여 가장 성능이 뛰어난 것으로 판단되는 실행 계획을 생성합니다. 쿼리 최적화 프로그램은 통계 모델을 기반으로 대체 계획을 계산한 다음 쿼리를 실행하기에 가장 빠를 것 같은 모델을 선택합니다.

AWS Glue 테이블에 대한 통계는 AWS Glue Data Catalog에 수집되고 저장되며 향상된 쿼리 계획 및 실행을 위해 Athena에 제공됩니다. 이러한 통계는 Parquet, ORC, JSON, ION, CSV, XML 등의 파일 유형에 대한 고유 수, null 수, max 및 min 값과 같은 열 수준 통계입니다. Amazon Athena는 이러한 통계를 사용하여 쿼리 처리 시 최대한 빨리 가장 제한적인 필터를 적용하여 쿼리를 최적화합니다. 이 필터링은 메모리 사용량과 쿼리 결과를 전달하기 위해 읽어야 하는 레코드 수를 제한합니다.

Athena는 CBO와 함께 규칙 기반 최적화 프로그램(RBO)이라는 기능을 사용합니다. RBO는 쿼리 성능 향상이 예상되는 규칙을 기계적으로 적용합니다. RBO의 변환은 쿼리 계획 단순화를 목표로 하기 때문에 일반적으로 유용합니다. 그러나 RBO는 비용 계산이나 계획 비교를 수행하지 않기 때문에 쿼리가 복잡할수록 RBO가 최적의 계획을 세우기 어렵습니다.

이러한 이유로 Athena는 RBO와 CBO를 모두 사용하여 쿼리를 최적화합니다. Athena는 쿼리 실행을 개선할 기회를 식별한 후 최적의 계획을 세웁니다. 실행 계획 세부 정보에 대한 자세한 내용은 SQL 쿼리에 대한 실행 계획 보기 섹션을 참조하세요. CBO 작동 방식에 대한 자세한 내용은 AWS 빅 데이터 블로그의 Speed up queries with the cost-based optimizer in Amazon Athena를 참조하세요.

AWS Glue 카탈로그 테이블에 대한 통계를 생성하려면 Athena 콘솔, AWS Glue 콘솔 또는 AWS Glue API를 사용할 수 있습니다. Athena는 AWS Glue 카탈로그와 통합되어 있으므로 Amazon Athena에서 쿼리를 실행할 때 해당 쿼리 성능이 자동으로 향상됩니다.

고려 사항 및 제한

  • 테이블 유형 - 현재 Athena의 CBO 기능은 AWS Glue Data Catalog에 있는 Hive 테이블만 지원합니다.

  • Athena for Spark - CBO 기능은 Athena for Spark에서 사용할 수 없습니다.

  • 요금 - 요금 정보는 AWS Glue 요금 페이지를 참조하세요.

Athena 콘솔을 사용하여 테이블 통계 생성

이 섹션에서는 Athena 콘솔을 사용하여 AWS Glue의 테이블에 대한 테이블 또는 열 수준 통계를 생성하는 방법을 설명합니다. AWS Glue를 사용하여 테이블 통계를 생성하는 방법에 대한 자세한 내용은 AWS Glue 개발자 안내서의 Working with column statistics를 참조하세요.

Athena 콘솔을 사용하여 테이블에 대한 통계 생성
  1. https://console.aws.amazon.com/athena/에서 Athena 콘솔을 엽니다.

  2. Athena 쿼리 편집기 테이블 목록에서 원하는 테이블에 대한 3개의 세로 점을 선택한 다음 통계 생성을 선택합니다.

    Athena 쿼리 편집기의 테이블 컨텍스트 메뉴
  3. 통계 생성 대화 상자에서 모든 열을 선택하여 테이블의 모든 열에 대한 통계를 생성하거나 선택한 열을 선택하여 특정 열을 선택합니다. 모든 열이 기본값입니다.

    통계 생성 대화 상자
  4. AWS Glue 서비스 역할의 경우 기존 서비스 역할을 생성하거나 선택하여 AWS Glue에 통계 생성 권한을 부여합니다. 또한 AWS Glue 서비스 역할에는 테이블의 데이터가 포함된 Amazon S3 버킷에 대한 S3:GetObject 권한이 필요합니다.

    AWS Glue 서비스 역할을 선택합니다.
  5. 통계 생성을 선택합니다. table_name에 대한 통계 생성 알림 배너에 작업 상태가 표시됩니다.

    통계 생성 알림 배너.
  6. AWS Glue 콘솔에서 세부 정보를 보려면 Glue에서 보기를 선택합니다.

    AWS Glue 콘솔에서 통계를 보는 방법에 대한 자세한 내용은 AWS Glue 개발자 안내서의 Viewing column statistics를 참조하세요.

  7. 통계가 생성된 후에는 다음 이미지와 같이 통계가 있는 테이블과 열에 통계라는 단어가 괄호 안에 표시됩니다.

    Athena 쿼리 편집기의 통계 아이콘을 보여주는 표

이제 쿼리를 실행하면 Athena는 통계가 생성된 테이블과 열에 대해 비용 기반 최적화를 수행합니다.

추가 리소스

자세한 내용은 다음 리소스를 참조하세요.

Enhance query performance using AWS Glue Data Catalog statistics (AWS YouTube channel)