Iceberg 테이블 최적화
Athena는 Apache Iceberg 테이블에서 쿼리 성능을 개선하기 위한 몇 가지 최적화 기능을 제공합니다. 데이터가 누적되면 파일 처리 오버헤드가 증가하고 Iceberg 삭제 파일에 저장된 행 수준 삭제를 적용하는 계산 비용이 증가하여 쿼리의 효율성이 떨어질 수 있습니다. 이러한 문제를 해결하기 위해 Athena는 테이블 구조를 최적화하기 위해 수동 압축 및 vacuum 연산자를 지원합니다. 또한 Athena는 Iceberg 통계를 함께 사용하여 쿼리 실행 중에 정확한 데이터 정리를 위해 비용 기반 쿼리 최적화 및 Parquet 열 인덱싱을 활성화합니다. 이러한 기능은 함께 작동하여 쿼리 실행 시간을 줄이고 데이터 스캔을 최소화하며 비용을 절감합니다. 이 주제에서는 이러한 최적화 기능을 사용하여 Iceberg 테이블에서 고성능 쿼리를 유지 관리하는 방법을 설명합니다.
OPTIMIZE
OPTIMIZE 압축 작업은 관련 삭제 파일의 크기와 수에 따라 데이터 파일을 보다 최적화된 레이아웃으로 재작성합니다. 구문 및 테이블 속성에 대한 자세한 내용은 OPTIMIZE 단원을 참조하세요.table REWRITE DATA
예제
다음 예에서는 삭제 파일을 데이터 파일로 병합하고 category 값이 c1인 대상 파일 크기에 가까운 파일을 생성합니다.
OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE category = 'c1'
VACUUM
VACUUM에서는 스냅샷 만료
예제
다음 예에서는 테이블 속성을 사용하여 지난 3일간의 데이터를 유지하도록 iceberg_table 테이블을 구성한 다음 VACUUM을 사용하여 이전 스냅샷을 만료하고 테이블에서 분리된 파일을 제거합니다.
ALTER TABLE iceberg_table SET TBLPROPERTIES ( 'vacuum_max_snapshot_age_seconds'='259200' ) VACUUM iceberg_table
Iceberg 테이블 통계 사용
Athena의 비용 기반 옵티마이저는 Iceberg 통계를 사용하여 최적의 쿼리 계획을 생성합니다. Iceberg 테이블에 대한 통계가 생성되면 Athena는 이 정보를 자동으로 사용하여 조인 순서, 필터 및 집계 동작에 대한 지능적인 결정을 내립니다. 이를 통해 종종 쿼리 성능이 개선되고 비용이 절감됩니다.
S3 테이블을 사용하면 Iceberg 통계가 기본적으로 켜집니다. 다른 Iceberg 테이블의 경우 Athena는 테이블 속성 use_iceberg_statistics를 사용하여 비용 기반 최적화를 위해 통계를 활용할지를 결정합니다. 시작하려면 AWS Glue 사용 설명서의 열 통계를 사용한 쿼리 성능 최적화를 참조하거나 Athena 콘솔을 사용하여 Iceberg 테이블에서 온디맨드 통계를 생성합니다.
Parquet 열 인덱싱 사용
Parquet 열 인덱싱을 사용하면 Athena가 행 그룹 수준 통계 외에도 페이지 수준 최소/최대 통계를 활용하여 쿼리 실행 중에 더 정확한 데이터 정리를 수행할 수 있습니다. 이를 통해 Athena는 행 그룹 내에서 불필요한 페이지를 건너뛰어 스캔되는 데이터의 양을 크게 줄이고 쿼리 성능을 개선할 수 있습니다. 정렬된 열에 선택적 필터 조건자가 있는 쿼리에 가장 적합하며 실행 시간과 데이터 스캔 효율성을 모두 개선하는 동시에 Athena가 Amazon S3에서 읽어야 하는 데이터의 양을 줄입니다.
Athena는 기본 Parquet 파일에 열 인덱스가 있는 경우 기본적으로 S3 Tables에서 Parquet 열 인덱스를 사용합니다. 다른 Iceberg 테이블의 경우 Athena는 use_iceberg_parquet_column_index 속성을 사용하여 Parquet 파일에서 열 인덱스를 활용할지를 결정합니다. AWS Glue 콘솔 또는 UpdateTable API를 사용하여이 테이블 속성을 설정합니다.