뷰 성능 개선을 위한 Materialized View
Oracle에서 Materialized View(물리화 뷰, 물질화 뷰)는 일반적인 뷰(View)와는 달리, 실제로 데이터를 저장하는 데이터베이스 객체입니다. Materialized View
는 주로 대량의 데이터 집합을 미리 계산하고 저장하여 조회 성능을 향상시키기 위해 사용됩니다. 이 뷰는 주기적으로 또는 수동으로 데이터를 업데이트할 수 있으며, 원본 테이블의 데이터가 변경되면 이에 따라 갱신됩니다.
1. Materialized View와 일반 View의 차이점
- 일반 View: 기본 테이블을 참조하는 쿼리 정의일 뿐, 실제로 데이터를 저장하지 않습니다. 매번 조회할 때마다 기본 테이블에서 데이터를 읽습니다.
- Materialized View: 뷰의 결과 데이터를 물리적으로 저장합니다. 데이터를 저장하고 주기적으로 갱신할 수 있어, 대규모 데이터 집합의 조회 성능을 크게 향상시킬 수 있습니다.
2. Materialized View의 용도
- 데이터 복제: 원격 데이터베이스에서 로컬 데이터베이스로 데이터를 복제하는 데 사용할 수 있습니다.
- 보고서 및 분석 쿼리 최적화: 대량의 데이터를 자주 분석하거나 보고서용으로 사용할 때, 매번 복잡한 쿼리를 실행하지 않고 미리 계산된 결과를 조회하는 방식으로 성능을 개선할 수 있습니다.
- 캐싱 및 성능 개선: 대용량 데이터셋에서 복잡한 집계 또는 조인 쿼리가 필요한 경우, Materialized View를 사용하면 성능이 크게 향상될 수 있습니다.
3. Materialized View 생성 방법
다음은 Materialized View를 생성하는 기본적인 구문입니다.
기본 구문
예제 1: 간단한 Materialized View 생성
위 예제는 employees
테이블에서 부서별 직원 수와 평균 급여를 계산하여 mv_employee_summary
라는 Materialized View에 저장합니다. 이후 이 뷰를 조회할 때는 이 데이터를 다시 계산하지 않고 미리 계산된 데이터를 빠르게 가져옵니다.
4. Materialized View Refresh (갱신)
Materialized View는 기본 테이블이 업데이트된 후에도 자동으로 갱신되지 않으며, 갱신 방식에 따라 수동 또는 자동으로 데이터를 업데이트할 수 있습니다.
갱신 옵션
- ON DEMAND: 수동으로 갱신해야 합니다.
- ON COMMIT: 기본 테이블에 데이터가 변경될 때마다 Materialized View가 자동으로 갱신됩니다.
- COMPLETE: Materialized View의 모든 데이터를 다시 계산하여 갱신합니다.
- FAST: 변경된 부분만 갱신합니다. (이 옵션을 사용하려면 기본 테이블에 Materialized View 로그가 필요합니다.)
- FORCE: 가능한 경우
FAST
를 사용하고, 그렇지 않으면COMPLETE
갱신을 사용합니다.
예제 2: 수동 갱신을 사용하는 Materialized View 생성
이 예제에서 BUILD IMMEDIATE
는 Materialized View를 생성할 때 즉시 데이터를 조회하여 뷰를 생성하고, REFRESH ON DEMAND
는 갱신이 필요할 때 수동으로 갱신한다는 의미입니다.
예제 3: 자동 갱신 (ON COMMIT) Materialized View 생성
이 예제에서는 기본 테이블인 sales
에 변경이 발생하고 COMMIT
이 실행될 때 Materialized View가 자동으로 갱신됩니다.
5. Materialized View Refresh 수동으로 갱신
ON DEMAND
로 생성된 Materialized View는 수동으로 갱신해야 합니다. 이를 위해 DBMS_MVIEW
패키지를 사용할 수 있습니다.
수동 갱신 예제
이 명령을 실행하면 mv_sales_summary
Materialized View가 다시 계산되어 갱신됩니다.
6. Materialized View 로그
FAST
갱신을 사용하려면, 기본 테이블에 대해 Materialized View 로그를 만들어야 합니다. 이는 기본 테이블의 변경 사항을 기록하여 Materialized View를 빠르게 갱신할 수 있도록 돕습니다.
Materialized View 로그 생성 예제
위 구문은 employees
테이블에 Materialized View 로그를 생성하여 변경된 행만 기록하고, 이를 통해 FAST
갱신을 사용할 수 있도록 설정합니다.
7. Materialized View 관리
삭제: Materialized View를 삭제하려면
DROP
명령을 사용합니다.정보 조회: Materialized View의 정보를 조회하려면
USER_MVIEWS
뷰에서 정보를 확인할 수 있습니다.
요약
- Materialized View는 실제 데이터를 저장하고 주기적으로 갱신되는 뷰입니다. 대량의 데이터를 미리 계산해 저장하여 조회 성능을 높일 수 있습니다.
- 갱신 옵션: Materialized View는 수동 또는 자동으로 갱신될 수 있으며, 갱신 방식에 따라
COMPLETE
,FAST
,FORCE
등의 옵션을 선택할 수 있습니다. - Materialized View 로그는
FAST
갱신을 지원하기 위해 필요합니다.