20분
OPTIMIZE & VACUUM: 성능 최적화와 정리
Delta Lake: ACID 트랜잭션과 Time Travel
OPTIMIZE & VACUUM: 성능 최적화와 정리
Spark 심화: Streaming & Delta Lake > Delta Lake: ACID 트랜잭션과 Time Travel
학습 목표
Small File Problem을 이해한다 OPTIMIZE와 Z-ORDER의 역할을 안다 VACUUM의 역할과 주의사항을 파악한다
Small File Problem: 작은 파일이 많으면?
스트리밍이나 빈번한 쓰기로 작은 파일이 쌓인다:
에디터 로딩 중...
문제:
- 파일 열기 오버헤드 (메타데이터 로딩)
- 병렬 처리 비효율 (파티션 너무 작음)
- S3/HDFS 리스트 연산 느림
OPTIMIZE: 파일 병합
작은 파일들을 큰 파일로 합친다.
에디터 로딩 중...
에디터 로딩 중...
Z-ORDER: 데이터 정렬
자주 필터링하는 컬럼 기준으로 물리적 정렬:
에디터 로딩 중...
효과: Data Skipping
에디터 로딩 중...
Z-ORDER 컬럼 선택 가이드
| 조건 | 적합 컬럼 |
|---|---|
| 자주 필터링 | O |
| 카디널리티 높음 (user_id) | O |
| 카디널리티 낮음 (성별) | X |
| 2-4개 이하 | O |
| 5개 이상 | 효과 감소 |
VACUUM: 오래된 파일 삭제
Time Travel에 사용된 오래된 파일을 정리:
에디터 로딩 중...
주의: VACUUM 후에는 Time Travel 제한!
에디터 로딩 중...
실무 유지보수 스크립트
에디터 로딩 중...
주의사항 정리
| 작업 | 권장 주기 | 주의사항 |
|---|---|---|
| OPTIMIZE | 일 1회 ~ 주 1회 | 리소스 사용량 증가 |
| Z-ORDER | OPTIMIZE와 함께 | 컬럼 2-4개 |
| VACUUM | 일 1회 ~ 주 1회 | Time Travel 제한 |