Optimizations
Constant folding
![](https://velog.velcdn.com/images/seonwook97/post/68b91436-f4ee-49e2-a7c7-97d94699043b/image.PNG)
- 상수 폴딩은 컴파일 타임에 상수 표현식을 평가함
- 런타임 시 불필요한 계산을 제거하여 성능을 향상
Column pruning
![](https://velog.velcdn.com/images/seonwook97/post/5eec898e-e09b-41c2-b1de-3ef66fd84849/image.PNG)
- 조건절에 해당하지 않는 컬럼을 쿼리 실행 시 제외
- 쿼리 실행에 필요한 데이터를 줄여 성능을 향상
Nested column pruning
![](https://velog.velcdn.com/images/seonwook97/post/6ed652e9-d3bf-476e-91f0-2c0fa2010136/image.PNG)
- nested column 중에서 조건절에 해당하지 않는 column을 쿼리 실행 시 제외
Predicate pushdown
![](https://velog.velcdn.com/images/seonwook97/post/fef1ce9e-e08e-42fd-bce0-4f270e1ba26a/image.PNG)
- WHERE 절을 스토리지 엔진으로 푸시하는 쿼리 최적화 기술
- DB 서버에서 처리해야 하는 데이터의 양을 줄여 성능 향상
Predicate pushdown into connectors
![](https://velog.velcdn.com/images/seonwook97/post/c9bf95fc-892a-4139-863d-11b9a1205b7d/image.PNG)
- 조건절을 커넥터로 전달하여 처리하므로 성능 향상
Predicate pushdown into the Hive Connector
Hive partition pruning
![](https://velog.velcdn.com/images/seonwook97/post/fbaa966f-c5b0-470a-834c-a588253c4cfb/image.PNG)
![](https://velog.velcdn.com/images/seonwook97/post/1ddcc7af-727e-4927-8700-60256620e2c0/image.PNG)
- 파티션 값을 기반으로 데이터를 필터링하는 작업이 포함
- 해당 테이블이 특정 컬럼으로 파티션되어지면 Hive 커넥터가 데이터를 쿼리 엔진에 반환하기 전에 조건에 해당하는 특정 컬럼 값과 동일하지 않은 모든 파티션을 정리
Hive bucket pruning
![](https://velog.velcdn.com/images/seonwook97/post/cd0fe250-49f9-4755-a505-34c81e1d49d8/image.PNG)
- 버킷 값을 기반으로 데이터를 필터링하는 작업이 포함
- 마찬가지로 특정 컬럼으로 버켓되면 조건에 해당하는 값과 동일하지 않은 버킷에 대해 쿼리 엔진에 반환하기 전 모든 버킷을 정리
Row group skipping for ORC and Parquet
![](https://velog.velcdn.com/images/seonwook97/post/09cf83af-893c-48e1-a0e1-e772792035da/image.PNG)
- 조건을 충족하는 데이터가 포함되지 않은 ORC 및 Parquet 파일의 행 그룹을 건너뜀
Reference