ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION374 / 1500
데이터베이스난이도 중하5분 답변 목표 · 보강본

대시보드 조회를 materialized view로 바꾸려 합니다. 일반 view와 갱신·최신성·비용이 어떻게 다른가요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

일반 view는 저장된 질의 정의이고 materialized view는 계산 결과를 저장해 재사용하는 구조입니다. 조회 비용을 미리 지불하는 대신 원본 변경이 언제 반영되는지와 재계산 비용을 관리해야 합니다.

동작 원리와 전제

주문 합계를 저장하면 매 요청 큰 집계를 피할 수 있지만 refresh 사이에는 값이 낡습니다. 전체 refresh와 증분 갱신 지원은 제품별로 다르며 동시 refresh 옵션도 잠금·인덱스 조건·임시 공간을 없애지 않습니다. 새 결과를 만드는 동안 사용자가 어느 버전을 읽는지 정합니다.

선택과 실패 처리

화면이 몇 분 지연을 허용하면 갱신 시각을 표시하고 실패 시 이전 결과를 유지할 수 있습니다. 결제·재고 확정에는 원본의 조건을 다시 확인해야 합니다. 증분 집계는 수정·삭제·지연 이벤트·중복 처리와 반올림 정책까지 다뤄야 합니다.

구체적인 사례와 검증

집계가 매 5분 갱신되는데 갱신 시간이 10분이면 단순 주기 설정만으로 5분 신선도를 보장하지 못합니다. 겹친 refresh를 허용할지 한 번만 실행할지와 실패 후 다음 기준점을 정해야 합니다. 새 결과를 부분적으로 덮는 구현은 사용자가 일부 구간은 새 값, 일부는 옛 값을 보는 문제를 만들 수 있어 원자 게시나 버전별 읽기가 필요합니다. 집계의 count·sum을 원본과 대조하고 삭제·환불·소급 보정을 포함합니다. 조회 성능만 기록하면 갱신 작업이 원본 DB를 느리게 만드는 비용을 놓치므로 사용자 쓰기 지연과 동시에 측정하겠습니다.

refresh 중 오류·동시 쓰기·큰 데이터·디스크 부족을 재현합니다. 조회 p99뿐 아니라 갱신 CPU·I/O·잠금·원본과의 차이를 측정합니다. 저장 결과가 있다는 사실이 현재 원본과 항상 같다는 보장은 아니므로 신선도 SLO와 재구축 절차를 함께 둡니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: 일반 view는 저장된 질의 정의이고 materialized view는 계산 결과를 저장해 재사용하는 구조입니다.
  • 선택 조건: 화면이 몇 분 지연을 허용하면 갱신 시각을 표시하고 실패 시 이전 결과를 유지할 수 있습니다.
  • 검증 기준: refresh 중 오류·동시 쓰기·큰 데이터·디스크 부족을 재현합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • materialized view가 원본 변경을 언제나 즉시 반영한다고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 읽기용 복사본을 둘 때 원본·현재 값·역사 snapshot과 재구축 책임을 어떻게 나누나요?
  • 동일 SQL의 비용이 달라졌다면 추정 행·실제 행·파라미터·대기를 어떤 순서로 비교하나요?
  • 늦은 옛 조회가 새 변경 뒤 캐시를 다시 채우면 어떤 원자 버전 검사가 필요한가요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기