리프레시는 “얼마나 다시 계산할지”와 “언제 실행할지”를 나눠 고릅니다.
Materialized View는 조회를 빠르게 하지만, 원본 변경을 언제 반영하느냐에 따라 성능 부담과 최신성이 달라집니다.
계산 범위
ON COMMIT
ON DEMAND
COMPLETE
정확하지만 매 커밋마다 무겁다
원본 변경 즉시 전체를 다시 만들면 최신성은 높지만 큰 집계에는 부담이 큽니다.
배치 시간에 전체 재계산
데이터가 많지 않거나 야간 배치처럼 조회 공백이 있는 경우 안정적입니다.
FAST
작은 변경을 즉시 따라간다
MV 로그가 있고 변경량이 작을 때, 최신성과 성능의 균형이 가장 좋습니다.
변경분만 모아 필요한 때 반영
운영자가 갱신 시점을 통제하면서 전체 재계산 비용을 피할 수 있습니다.
FORCE
가능하면 FAST, 안 되면 COMPLETE
환경에 맞춰 자동 선택하지만, 예측 가능한 운영에는 명시 전략이 더 낫습니다.
수동 실행 때도 안전망을 둔다
FAST가 불가능한 경우 전체 재계산으로 돌아가므로 실행 시간을 따로 감시합니다.
FAST의 전제: MV 로그
원본 테이블에서 무엇이 바뀌었는지 알아야 변경분만 따라갈 수 있습니다.
CREATE MATERIALIZED VIEW LOG ON orders
WITH ROWID, SEQUENCE
INCLUDING NEW VALUES;
운영 판단
“조회가 빨라야 하는 시점”과 “원본 변경을 참을 수 있는 지연”을 먼저 정하고, 그 다음 refresh 방식을 고릅니다.