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;