3. SQL Warehouse 성능 최적화
3.1 쿼리 프로필 분석
SQL Warehouse의 Query Profile에서 주목해야 할 핵심 지표입니다.| 단계 | 확인 항목 | 최적화 방향 |
|---|---|---|
| Scan | 읽은 바이트 수 vs 테이블 크기 | 비율 높으면 클러스터링 부족 |
| Filter | 필터 전후 행 수 비율 | 비율 높으면 프루닝 미작동 |
| Join | 조인 유형 (Broadcast vs SortMerge) | 작은 테이블은 Broadcast로 |
| Aggregate | 집계 전후 행 수 | Pre-aggregate 고려 |
| Exchange (Shuffle) | Shuffle 데이터량 | 조인 키 최적화, 클러스터링 |
| Spill | Disk Spill 발생 여부 | Warehouse 사이즈 업 |
3.2 인덱스 없이 성능 높이기
Databricks는 전통적인 B-Tree 인덱스 대신 다음 기법들로 성능을 달성합니다.3.3 쿼리 캐싱 전략
| 캐시 유형 | 유효 기간 | 무효화 조건 | 설정 방법 |
|---|---|---|---|
| Result Cache | 기본 활성화 | 테이블 데이터 변경 시 자동 무효화 | 자동 (수동 비활성화 가능) |
| Disk Cache | Warehouse 재시작까지 | Warehouse 재시작 또는 만료 | Storage-optimized 인스턴스 자동 |
4. Query Profile 읽는 법 상세
4.1 Query Profile 핵심 지표
4.2 Query Profile 실전 분석 사례
5. Query History로 병목 분석
5.1 시스템 테이블 활용
5.2 반복 최적화 대상 쿼리 찾기
참고 Query History 활용 팁: 주 1회 Query History를 분석하여 상위 10개 비용 쿼리를 최적화하면, 전체 SQL Warehouse 비용의 20~40%를 절감할 수 있습니다.
6. 파이프라인 성능 최적화
6.1 SDP(Spark Declarative Pipelines) 처리량 최적화
| 설정 | 기본값 | 성능 팁 |
|---|---|---|
| pipelines.trigger.interval | "once" 또는 연속 | 배치: "once", 실시간: "5 seconds" |
| Serverless 스케일링 | 자동 | Enhanced Autoscaling이 워크로드에 맞게 자동 조절 |
| 테이블 속성 | 기본값 | Liquid Clustering 적용 시 읽기 성능 대폭 향상 |
6.2 Auto Loader 파일 감지 모드 선택
| 모드 | 동작 방식 | 장점 | 단점 | 적합한 상황 |
|---|---|---|---|---|
| Directory Listing | 주기적 디렉토리 스캔 | 설정 간단, 추가 인프라 불필요 | 파일 수 증가 시 스캔 비용 증가 | 파일 수 < 100만, 간단한 구조 |
| File Notification | SNS/SQS 이벤트 기반 | 즉시 감지, 대규모에 효율적 | 클라우드 리소스 설정 필요 | 파일 수 > 100만, 실시간 요구 |
6.3 Structured Streaming 지연시간 최적화
| 지연시간 목표 | 트리거 설정 | 적합한 워크로드 |
|---|---|---|
| < 1초 | trigger(processingTime="0 seconds") | 실시간 대시보드, 알림 |
| 1~10초 | trigger(processingTime="5 seconds") | 준실시간 분석 |
| 10초~5분 | trigger(processingTime="1 minute") | 마이크로 배치 ETL |
| 5분+ | trigger(availableNow=True) | 스케줄 기반 배치 |
7. SDP 성능 튜닝 상세
7.1 파이프라인 클러스터 사이징
| 파이프라인 유형 | 데이터 규모 | 권장 구성 | 비고 |
|---|---|---|---|
| 소규모 배치 | < 10GB/실행 | Serverless (기본) | 관리 불필요 |
| 중규모 배치 | 10~100GB/실행 | Serverless Enhanced | 자동 스케일링 |
| 대규모 배치 | 100GB+/실행 | Classic, 8+ workers | Spot 활용 |
| 실시간 스트리밍 | 연속 | Serverless | 자동 확장/축소 |
7.2 SDP Expectations 성능 영향
| Expectation 유형 | 성능 영향 | 설명 |
|---|---|---|
| EXPECT | 낮음 | 위반 행을 기록하되 통과시킴 |
| EXPECT OR DROP | 낮음~중간 | 위반 행을 필터링 (추가 연산) |
| EXPECT OR FAIL | 낮음 | 위반 시 파이프라인 중단 |
| 복잡한 Expectation | 중간~높음 | 서브쿼리, JOIN 포함 시 추가 비용 |
8. 파이프라인 관측 가능성 (Observability)
8.1 SDP 이벤트 로그 활용
8.2 모니터링 대시보드 구축
| 모니터링 지표 | 데이터 소스 | Alert 조건 |
|---|---|---|
| 파이프라인 실행 시간 | Event Log | 평균 대비 2배 초과 |
| 데이터 품질 위반 | Expectation 결과 | 위반율 > 5% |
| 파일 수 증가 | DESCRIBE DETAIL | numFiles > 임계값 |
| 스트리밍 지연 | Streaming Metrics | 처리 지연 > 5분 |
| 실패/재시도 | Event Log | 실패 발생 시 즉시 알림 |
참고
관측 가능성 모범 사례: AI/BI Dashboard로 파이프라인 모니터링 대시보드를 구축하고, Alert를 설정하여 이상 발생 시 Slack으로 즉시 알림을 받으세요. 시스템 테이블 (system.query.history, Event Log)을 데이터 소스로 활용합니다.
참고 링크
- Databricks: Query Profile
- Databricks: Query History
- Databricks: SDP Performance
- Databricks: Auto Loader
- Databricks: Streaming Metrics
- Databricks: Event Log