이 문서는 데이터 웨어하우징 섹션의 일부입니다.
Materialized View란?
Materialized View(Materialized View, MV) 는 SQL 쿼리의 결과를 미리 계산하여 물리적으로 저장 하는 데이터베이스 객체입니다. 일반 뷰는 매번 쿼리 시 재계산하지만, Materialized View는 저장된 결과를 즉시 반환하므로 쿼리 성능이 비약적으로 향상 됩니다.💡 비유: 일반 뷰는 “레시피(쿼리)“만 저장해 두고 매번 요리하는 것이고, Materialized View는 “완성된 요리”를 냉장고에 보관해 두고 바로 내놓는 것입니다.
일반 뷰와 Materialized View 비교
CREATE MATERIALIZED VIEW 문법
기본 생성
코멘트와 속성 지정
파티션 지정
새로고침 (Refresh)
Materialized View의 데이터를 최신 상태로 업데이트하는 과정을 새로고침(Refresh) 이라고 합니다.수동 새로고침
스케줄 새로고침
SQL Warehouse에서 생성한 Materialized View는 스케줄을 설정하여 주기적으로 새로고침할 수 있습니다.SDP 파이프라인에서의 새로고침
SDP 파이프라인 내에서 Materialized View를 정의하면, 파이프라인 실행 시 자동으로 새로고침 됩니다.증분 갱신 vs 전체 재계산
Databricks는 가능한 경우 증분 갱신(Incremental Refresh) 을 수행하여 변경된 부분만 업데이트합니다.증분 갱신이 지원되는 조건
증분 갱신이 불가능한 경우 Databricks는 자동으로 전체 재계산으로 전환합니다.
Streaming Table과의 비교
Materialized View와 스트리밍 테이블은 모두 데이터를 물리적으로 저장하지만, 사용 목적이 다릅니다.선택 기준
적합한 사용 사례
비적합한 사용 사례
관리 명령
증분 새로고침 내부 동작 — Change Tracking
MV의 증분 갱신(Incremental Refresh)이 어떻게 동작하는지 내부 메커니즘을 이해하면, 성능 문제를 진단하고 최적의 MV를 설계할 수 있습니다.Change Tracking 원리
Delta Lake의 트랜잭션 로그(_delta_log) 는 테이블에 대한 모든 변경 사항을 기록합니다. MV의 증분 갱신은 이 로그를 활용하여 동작합니다.증분 갱신이 가능한 쿼리 패턴
증분 갱신이 불가능한 경우
다음 패턴에서는 전체 재계산(Full Recomputation) 으로 폴백됩니다.⚠️ Gotcha: MV가 증분 갱신을 사용하는지 전체 재계산을 사용하는지는 이벤트 로그에서 확인 할 수 있습니다.DESCRIBE HISTORY로 각 새로고침의operationMetrics를 조회하면numOutputRows(출력 행)와numSourceRows(소스 행)를 비교하여 증분 여부를 판단할 수 있습니다.
MV vs 사전 집계 테이블(Pre-aggregation Table) 비교
“MV 대신 그냥 집계 테이블을 CTAS로 만들면 안 되나요?”라는 질문을 자주 받습니다. 두 접근법의 차이를 명확히 비교합니다.💡 SA 권장: 단순 집계(SUM, COUNT, AVG)이고 소스가 Delta 테이블이면 MV가 항상 유리 합니다. 사전 집계 테이블은 MV가 지원하지 않는 복잡한 로직(OUTER JOIN, Window 함수 등)이 필요한 경우에만 사용합니다.
대규모 MV 관리 전략
수십~수백 개의 MV를 운영하는 엔터프라이즈 환경에서의 관리 전략입니다.MV 분류 체계
스케줄 최적화 전략
MV 새로고침 순서 관리
MV 간에 의존성이 있는 경우(MV_A를 소스로 MV_B가 참조), 새로고침 순서가 중요합니다.MV와 Predictive Optimization 연동
Predictive Optimization이 활성화되면 MV에도 자동 최적화가 적용됩니다.💡 실무 팁: MV를 많이 사용하는 환경에서는 반드시 Predictive Optimization을 활성화 하는 것을 권장합니다. MV의 증분 갱신은 소형 파일을 누적시키는 경향이 있는데, 자동 OPTIMIZE가 이를 해결합니다.
비용 분석 — MV 유지 비용 vs 쿼리 비용 절감
MV 도입을 결정할 때 가장 중요한 것은 유지 비용과 쿼리 비용 절감의 손익 분기점 입니다.MV 유지 비용 구성
쿼리 비용 절감 구성
손익 분기점 계산 예시
💡 판단 기준: 소스 데이터가 크고, 집계 결과가 작으며, 쿼리 빈도가 높을수록 MV의 ROI가 높아집니다. 반대로 소스가 작거나 쿼리가 드문 경우에는 MV 유지가 오히려 비용을 증가시킬 수 있습니다.