업무 중 같은 쿼리라도 파티션 조건을 어떻게 하냐에 따라 쿼리 속도가 달라 접근법을 찾아 보았다.
1 . etl_ymd like '202301%'
etl_ymd가 문자열로 분할되면 (예 :varchar 또는text ') 일반적으로 범위 또는 목록과 함께 작동하기 때문에 모든 파티션 풀스캔하여 속도가 느려질 수 있다.
2 . etl _ymd between '20230101' and '20230131'
etl_ymd가 이 조건은 파티션 가지 치기가 효율적으로 발생할 가능성이 높다. etl_ymd가 문자열로 저장되면, 명확한 범위를 정의하기 때문에 접근이 빠름.
하이브 파티셔닝을위한 모범 사례
고전성 열에서 분할 사용 (예 : '국가'대신 '날짜')
✅ 너무 많은 파티션을 피한다. (작은 파티션 = 높은 메타 데이터 오버 헤드 )
✅ 큰 데이터를 동적으로 로드 할 때 동적 파티셔닝 사용
✅ 쿼리에서 파티션 접근 (`where etl_ymd = 'value')
✅ 더 나은 성능을 위해 ORC 또는 PARQUET 파일 형식 사용
동적 로드 ex)
INSERT INTO TABLE sales PARTITION ( etl_ymd )
SELECT item, amount, etl_ymd FROM temp_sales;
'DB' 카테고리의 다른 글
Hive - index, partition 비교 및 정리 (0) | 2025.03.09 |
---|---|
DB - Hive (msck repair table) (0) | 2025.02.16 |
Hive - UDF (1) | 2025.02.02 |
Hive - HQL 함수 (0) | 2025.02.02 |
SQL - begin, index, anti-join (0) | 2025.01.19 |