-
[Apache Iceberg] 아이스버그 테이블 최적화 - 메트릭 수집개발지식 아카이브/Data - Iceberg 2025. 1. 22. 07:30
Apache 아이스버그 테이블 최적화 - 메트릭 수집 편
메트릭 수집
테이블 필드 정보의 수집
아이스버그의 고유 특징인 Manifest는 테이블의 모든 필드 메트릭을 추적하여 쿼리 최적화를 돕는다
추적하는 필드 레벨 메트릭은 총 4개이다
- 카운트 메트릭 3개
- 전체 카운트
- null 카운트
- distinct 카운트
- Upper ~ lower 범위 값
설정 최적화
하지만 테이블이 엄청 크고, 칼럼수도 무척 많다면? 예를 들어 100개가 넘는다면?
→ 이 때는 추적되는 메트릭 수가 메타데이터를 읽는 데 부담이 될 수 있다.
성능 개선을 위해 Table properties를 사용하여 컬럼별 메트릭 추적 여부를 조정할 수 있다.
→ 쿼리 필터에서 자주 사용되지 않는 Column의 메트릭은 수집 해제할 수 있음 → 성능 개선 도모
ALTER TABLE test.temp_compaction SET TBLPROPERTIES ( 'write.metadata.metrics.column.col1'='none', 'write.metadata.metrics.column.col2'='full', 'write.metadata.metrics.column.col3'='counts', 'write.metadata.metrics.column.col4'='truncate(16)', );
- none
- 메트릭 수집 해제
- counts
- BOUND 제외하고 카운트 메트릭 3개만 수집
- truncate(XX)
- UPPER~LOWER 수집 관련 옵션
- 값을 특정 문자 수로 세고 잘라내고, 이를 기준으로 상한/하한을 정한다. 예를 들어 문자열 컬럼은 16자로 잘리며, 범위는 잘린 값을 기준으로 한다
- 수집 default 값 = truncate(16)
- ex. { "file_path": "/path/to/data1.parquet", "lower_bounds": { "id": 1, "description": "Short descripti" }, "upper_bounds": { "id": 2, "description": "Very long descr" } }
- full
- UPPER~LOWER 수집 관련 옵션
- 카운트와 상한/하한을 잘라내지 않고 수집
- ex. { "file_path": "/path/to/data1.parquet", "lower_bounds": { "id": 1, "description": "Short description" }, "upper_bounds": { "id": 2, "description": "Very long description that exceeds the truncate limit" } }
Reference
이 포스팅은 Apache Iceberg The Definitive Guide 4장의 내용에 기반하여 작성하였습니다.
관련 포스팅 보기
2025.01.13 - [개발지식 아카이브/Data - Iceberg] - [Apache Iceberg] 아이스버그 테이블 최적화 - 컴팩션과 정렬'개발지식 아카이브 > Data - Iceberg' 카테고리의 다른 글
[Apache Iceberg] 아이스버그 테이블 최적화 - COW와 MOR 설정 (0) 2025.01.20 [Apache Iceberg] 아이스버그 테이블 최적화 - 스토리지 최적화 편 (0) 2025.01.17 [Apache Iceberg] 아이스버그 테이블 최적화 - 파티셔닝 (0) 2025.01.15 [Apache Iceberg] 아이스버그 테이블 최적화 - 컴팩션과 정렬 (0) 2025.01.13 - 카운트 메트릭 3개