상태 변화

물리화된 뷰는 저장된 집계라서, 원본이 바뀌어도 REFRESH 전까지는 이전 결과를 읽습니다.

핵심은 조회 속도보다 저장된 스냅샷의 교체 시점입니다. CONCURRENTLY는 그 교체 동안에도 기존 스냅샷 조회를 계속 허용합니다.

1. 원본 변경

기준 테이블은 먼저 최신 상태가 됩니다

orders에 4월 주문이 추가되면 원본 데이터는 즉시 바뀝니다.
하지만 mv_monthly_sales는 저장된 결과라 자동으로 따라오지 않습니다.
2. 저장된 스냅샷

조회는 빠르지만, 잠시 오래된 집계를 읽을 수 있습니다

REFRESH 전 저장 결과: 3월까지 집계 4월 신규 주문은 아직 미반영
REFRESH 후 저장 결과: 4월까지 집계 새 집계로 스냅샷 교체 완료
3. 갱신 실행

REFRESH는 저장된 결과를 다시 계산해 교체합니다

REFRESH MATERIALIZED VIEW mv_monthly_sales;

즉시 최신 원본을 읽는 것이 아니라, 갱신 시점에 새 결과를 만들어 기존 스냅샷과 바꾸는 과정입니다.

기본 REFRESH

즉시 교체
REFRESH MATERIALIZED VIEW mv_monthly_sales;

갱신 동안 조회가 잠시 기다릴 수 있습니다. 운영이 단순하지만 읽기 중단 가능성을 감수합니다.

CONCURRENTLY

조회 유지
REFRESH MATERIALIZED VIEW CONCURRENTLY mv_monthly_sales;

기존 스냅샷으로 계속 조회하다가 완료 시 새 결과로 교체합니다. 사용하려면 UNIQUE INDEX가 필요합니다.