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

ANALYZE TABLE (통계 수집)

💡 ANALYZE TABLE 은 테이블의 컬럼 통계(statistics) 를 수집하는 명령입니다. 쿼리 최적화기(Query Optimizer)가 이 통계를 활용하여 더 효율적인 실행 계획을 수립합니다.

사용법

수집되는 통계 정보


운영 주기 권장사항

운영 스크립트 예시

💡 Predictive Optimization 이 활성화된 Managed Table이라면, OPTIMIZE와 VACUUM을 Databricks가 자동으로 실행합니다. 수동 유지 보수가 필요 없어지므로, 가능하다면 Predictive Optimization 사용을 권장합니다. 자세한 내용은 Predictive Optimization 문서를 참고하세요.

현장에서 배운 것들: OPTIMIZE와 VACUUM의 현실

VACUUM을 안 해서 스토리지 비용이 3배로 뛴 사례

이건 제가 2022년에 실제로 마주한 상황입니다. 한 미디어 고객이 Databricks를 도입한 지 8개월째였는데, 월간 S3 비용이 계속 올라가서 원인 분석을 요청해왔습니다. 원인은 단순했습니다. VACUUM을 한 번도 실행하지 않았습니다.
문제를 더 심각하게 만든 것은, 이전 파일이 많아질수록 파일 목록 조회(listing) 가 느려져서 쿼리 성능까지 저하되었다는 점입니다.
⚠️ 교훈: VACUUM은 “언젠가 해야지”가 아니라 Day 1부터 스케줄링 해야 합니다. Predictive Optimization이 있으면 자동이지만, 그렇지 않다면 주 1회 VACUUM을 반드시 스케줄에 넣으세요.

프로덕션에서 VACUUM DRY RUN을 먼저 돌려야 하는 이유

VACUUM은 되돌릴 수 없는 작업 입니다. 한번 삭제된 파일은 복구할 수 없습니다. 그래서 프로덕션에서는 반드시 DRY RUN을 먼저 실행해야 합니다. 실제로 한 고객이 DRY RUN 없이 VACUUM을 실행했다가 문제가 생긴 사례가 있습니다.
올바른 VACUUM 실행 절차:

OPTIMIZE 주기: 실전 가이드

“얼마나 자주 OPTIMIZE를 해야 하나요?”는 가장 많이 받는 질문입니다. 정답은 **“테이블의 쓰기 패턴에 따라 다르다”**입니다.

OPTIMIZE가 정말 필요한지 확인하는 방법

무작정 OPTIMIZE를 실행하지 말고, 먼저 테이블 상태를 진단하세요.

OPTIMIZE + VACUUM 자동화: 프로덕션 운영 패턴

수동으로 OPTIMIZE와 VACUUM을 실행하는 것은 초기에만 허용됩니다. 프로덕션에서는 반드시 자동화해야 합니다.

패턴 1: Predictive Optimization (권장)

💡 Predictive Optimization이 하는 일: Databricks가 테이블의 쓰기 패턴, 쿼리 패턴, 파일 크기 분포를 자동으로 분석하여, 최적의 시점에 OPTIMIZE와 VACUUM을 실행합니다. 사람이 판단하는 것보다 정확하고, 잊지 않습니다. 가능하다면 이것을 1순위로 사용하세요.

패턴 2: Lakeflow Jobs로 스케줄링

많은 팀이 하는 실수들


정리


참고 링크