[Oracle] MView란?
* With절 plan에 사용되는 것과 일반적인 View와 다름
1. 쿼리 결과를 디스크의 별도 테이블 스페이스에서 데이터 파일 형태로 저장하는데 사용자는 MView 데이터를 직접 수정할 수 없고, 원본 테이블의 변경 사항에 따라 자동으로 갱신한다.
2. 데이터베이스 객체로 관리되기 때문에 데이터 딕셔너리에서 MView를 확인할 수 있다.
또는 SELECT * FROM USER_SEGMENTS 쿼리로 확인이 가능하다. 일반 VIEW는 조회되지 않는 반면 MVIEW는 조회가 가능하다.
SQL이 다시 실행되어야 하는 일반 VIEW와는 달리 데이터가 미리 저장되기 때문에 더 빠른 조회가 가능하다.
3. 쿼리가 재실행되는 경우 사용자에게 미리 저장된 결과를 전달함으로써 쿼리를 여러 차례 재실행하는 데 따르는 성능적인 부담을 줄이기 위해 등장
4. 주로 집계성 데이터에서 사용되는데, 집계 연산에 대한 부하가 큰 SQL인 경우, Grouping이 완료된 데이터를 미리 저장해놓고 재활용함으로써 재처리 없이 조회에 대한 응답 속도를 높일 수 있다.
5. 원본 테이블에 대한 집계용 복사본이라고 생각하면 쉽다. Join을 통해 여러 개의 원본 테이블에 대한 복사도 진행할 수 있다.
6. 명령어는 다음과 같다. 옵션은 아래 기술
CREATE MATERIALIZED VIEW VIEW_NAME
BUILD IMMEDIATE[DEFERRED] REFRESH[FAST]
[COMPLETE]
[FORCE]
[NEVER]
ENABLE QUERY REWRITE
AS
-- SELECT 구문
7. 빌드 생성시 다음 두 가지 모드를 선택할 수 있다.
BUILD IMMEDIATE | MVIEW를 생성할 때 데이터를 채우기 |
BUILD DEFERRED | MVIEW 정의를 생성하되 데이터는 채워지지 않는다. 원본 데이터가 commit될 때 채워짐 |
8. 복사 시점도 다양하게 설정할 수 있다.
ON COMMIT | MVIEW의 원본 테이블 중 하나를 수정한 트랜잭션이 커밋되면 새로 고침이 자동으로 발생합니다. MVIEW가 빠르게 새로 고쳐질 수 있는 경우(즉, 복잡하지 않은 경우) 지정할 수 있습니다. 이 모드를 사용하려면 권한이 ON COMMIT필요합니다. |
ON DEMAND | 새로 고침은 사용자가 패키지 DBMS_MVIEW( REFRESH, REFRESH_ALL_MVIEWS, REFRESH_DEPENDENT)에 포함된 사용 가능한 새로 고침 절차 중 하나를 수동으로 실행할 때 발생합니다. |
ON STATEMENT | MVIEW의 기본 테이블에 대해 DML 작업이 수행되면 트랜잭션을 커밋할 필요 없이 자동으로 새로 고침이 발생합니다. 이 방법에서는 MVIEW의 기본 테이블에 MVIEW 로그를 생성할 필요가 없습니다. |
ON STATEMENT보다는 ON COMMIT을 많이 사용한다고 한다. 다중 사용자 환경에서 ON STATEMENT는 부적합하기 때문이다.
원본 데이터에 대한 UPDATE, INSERT, DELETE가 빈번하게 일어나는 경우, 정확한 데이터 동기화를 위해 ON DEMAND를 이용할 수 있다.
9. 복사 옵션은 다음과 같다.
COMPLETE | MVIEW 의 정의 쿼리를 다시 계산하여 새로 고칩니다. |
FAST | MVIEW 로그에 기록된 정보를 사용하거나 SQL*Loader 직접 경로 또는 파티션 유지 관리 작업에서 기록된 정보를 사용하여 MVIEW를 새로 고치기 위해 증분 변경 사항을 적용합니다. |
FORCE | FAST 가능하면 새로 고침을 적용합니다. 그렇지 않으면 COMPLETE 새로 고침이 적용됩니다. |
NEVER | MVIEW가 새로 고침 메커니즘으로 새로 고쳐지지 않음을 나타냅니다. |
https://oracle-base.com/articles/misc/materialized-views
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/dwhsg/basic-materialized-views.html
Database Data Warehousing Guide
docs.oracle.com
http://www.gurubee.net/lecture/1857
Materialized View란?
Materialized View란 ? Materialized View(이하 MView로 표시) 이것은 제목 그대로 View 입니다. 하지만 일반 View는 논리적인 테이..
www.gurubee.net