Skip to main content
이 문서는 레이크하우스 아키텍처 섹션의 일부입니다.

왜 Predictive Optimization이 필요한가요?

Delta Lake 테이블을 건강하게 유지하려면 OPTIMIZE(소형 파일 병합), VACUUM(불필요한 파일 삭제), ANALYZE TABLE(통계 수집)을 정기적으로 실행해야 합니다. 하지만 수십, 수백 개의 테이블을 관리할 때 이 작업들을 수동으로 스케줄링하고 모니터링하는 것은 상당한 운영 부담입니다.
💡 Predictive Optimization(예측 최적화) 은 Databricks가 테이블의 상태를 자동으로 모니터링 하고, 최적의 시점에 OPTIMIZE, VACUUM, ANALYZE를 자동 실행 하는 기능입니다. 사용자가 별도의 유지 보수 작업을 스케줄링할 필요가 없어집니다.
비유하자면, 자동차의 자동 정비 시스템 과 같습니다. 운전자가 일일이 엔진 오일 교환 주기를 기억하지 않아도, 시스템이 상태를 감지하여 최적의 시점에 정비를 수행합니다.

자동 수행 작업

Predictive Optimization이 활성화되면 다음 세 가지 작업이 자동으로 수행됩니다.

동작 방식

  1. Databricks가 테이블의 메타데이터와 쓰기 패턴 을 지속적으로 모니터링합니다
  2. 소형 파일 비율, 마지막 OPTIMIZE 시점, 데이터 변경량 등을 분석합니다
  3. 최적화가 필요하다고 판단되면 자동으로 유지 보수 작업을 실행 합니다
  4. 워크로드가 적은 시간대에 실행하여 성능 영향을 최소화합니다

활성화 방법

Predictive Optimization은 카탈로그, 스키마, 테이블 세 가지 수준에서 활성화할 수 있습니다.

카탈로그 수준 (가장 넓은 범위)

스키마 수준

테이블 수준

비활성화

상속 규칙

상위 수준에서 활성화하면 하위 객체에 상속 됩니다. 하위 수준에서 명시적으로 ENABLE/DISABLE을 설정하면 상속을 오버라이드 합니다.

요구사항

Predictive Optimization을 사용하려면 다음 조건을 충족해야 합니다.
⚠️ External Table에서는 Predictive Optimization이 지원되지 않습니다. External Table의 유지 보수는 수동으로 OPTIMIZE, VACUUM을 실행해야 합니다. 이것이 가능하다면 Managed Table을 사용하는 것을 권장하는 이유 중 하나입니다.

모니터링

현재 설정 상태 확인

시스템 테이블을 통한 모니터링

Predictive Optimization의 실행 이력은 시스템 테이블(System Tables) 에서 확인할 수 있습니다.

주요 모니터링 항목


비용 관련 참고사항

💡 Predictive Optimization의 비용은 일반적으로 수동 스케줄링 대비 더 효율적 입니다. 불필요한 시점에 OPTIMIZE를 실행하는 낭비가 줄어들고, 필요한 시점에만 정확히 실행되기 때문입니다.

모범 사례


내부 동작 원리 심층 분석

Predictive Optimization은 단순한 스케줄 실행이 아닌, 머신러닝 기반 워크로드 분석 을 통해 최적의 시점과 방법을 결정합니다.

3단계 동작 프로세스

최적화 트리거 조건 (추정)

Databricks가 정확한 알고리즘을 공개하지 않지만, 관찰된 동작 패턴에 기반한 추정 트리거 조건입니다.
⚠️ 주의: 위 조건은 공식 문서에 명시되지 않은 관찰 기반 추정입니다. 실제 동작은 다를 수 있으며, Databricks가 알고리즘을 지속적으로 개선합니다.

비용 분석 — 자동 최적화 DBU vs 수동 OPTIMIZE DBU

Predictive Optimization의 과금 구조

수동 vs 자동 비용 비교

💡 핵심 인사이트: Predictive Optimization의 가장 큰 비용 절감 효과는 “불필요한 OPTIMIZE 실행을 줄이는 것”입니다. 수동 스케줄은 데이터 변경이 없는 테이블에도 OPTIMIZE를 실행하지만, Predictive Optimization은 실제로 필요한 테이블에만 실행합니다.

비용 모니터링 쿼리


비활성화가 필요한 경우

대부분의 테이블에서 Predictive Optimization을 활성화하는 것이 좋지만, 특정 상황에서는 비활성화하는 것이 적절합니다.

대규모 환경에서의 동작 특성

스케일 관련 관찰 사항

대규모 환경 모범 사례

  1. 카탈로그 레벨에서 활성화: 개별 테이블 관리 대신 카탈로그 레벨에서 ENABLE하고, 예외 테이블만 DISABLE합니다.
  2. 시스템 테이블 대시보드 구축: 실행 이력과 효과를 주기적으로 모니터링하는 대시보드를 만듭니다.
  3. 예외 목록 관리: 비활성화한 테이블 목록을 문서화하고, 비활성화 사유를 기록합니다.
  4. 비용 알림 설정: Predictive Optimization DBU 소비가 임계치를 초과하면 알림을 받도록 설정합니다.

Liquid Clustering과의 시너지

Predictive Optimization은 Liquid Clustering 이 적용된 테이블에서 특히 효과적입니다. Liquid Clustering은 데이터를 지정된 컬럼 기준으로 자동 재배치하는 기능인데, 이 재배치 작업 자체가 OPTIMIZE의 일부로 실행됩니다.

정리


참고 링크