DB

DB - partition 접근

개발 일기92 2025. 2. 16. 15:19

 

업무 중 같은 쿼리라도 파티션 조건을 어떻게 하냐에 따라 쿼리 속도가 달라 접근법을 찾아 보았다.

 

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