본문 바로가기
DATABASE/ORACLE

materialized view 란? (m_view)

by YUNZZANG 2023. 4. 14.
728x90
설명)
summary는 조인 및 aggregate 작업을 미리 계산하고 결과를 테이블에 저장하여 쿼리 시간을 줄이는 aggregate view
 
특징)
  - materialized view를 만드는 데 활용된 table이 drop되어도 별도로 데이터를 저장하기 때문에 조회 가능.
  - partitioning 될 수 있음.
  - partition table에 대해서도 materialized view 생성 가능
  - materialized view에 대한 인덱스 생성 가능.
 
mview refresh 방법)
1. fast refresh
  - 정기적인 시간 간격 또는 원할 때 refresh 가능
  - master table의 변화는 transaction이 commit 될 때마다 refresh될 수 있음.
  - A materialized view log is a schema object that records changes to master table data so that a materialized view defined on the master table can be refreshed incrementally.
  - 요약하면 fast refresh를 위한 materialized view log가 있고 이 materialized view log때문에 점진적으로 refresh 가능(매번 처음부터가 아니라)

 

2. complete refresh
    - 느리다(특히, 많은 양의 데이터를 처리하고 읽어야 한다면)
    - materialized view가 사전 빌드 된 테이블을 참조하지 않는 한 materialized view는
       처음 BUILD IMMEDIATE로 정의될 때 complete refresh가 발생
      refresh에는 materialized view를 정의하는 쿼리 실행이 포함됨.
 
create materialized view의 전제조건 )
-create materialized view를 적용하려는 user는 role에 부여된 권한을 받는게 아니라 직접 권한을 받아야 한다.
 
본인 계정에서 materialized view를 만들 때
- create materialized view + (create table or create any table)
- materialized view를 만들 때 사용한 object에 대한 select 권한 or select any table 권한 필요
 
 
알쓸신잡)
When DML changes are made to master table data, Oracle Database stores rows describing those changes in the materialized view log and then uses the materialized view log to refresh materialized views based on the master table.
=> master table의 데이터가 바뀌면 master view log에 변경 사항 저장하고 materialized view를 refresh할 때 master view log를 사용
 
materialize view log가 필요한 경우 => fast refresh(or incremental)
- materialized veiw 쿼리를 재수행 할 필요 없이 변경된 부분만 refresh 가능
materialize view log가 필요없는 경우 => complete refresh
  - materialized view를 refresh하기 위해서 materialized view 쿼리 재수행 필요
 
- materialized view log는 master table의 스키마와 같은 스키마여야 하고 master database에 위치해야 함.
- master table은 오직 한개의 materialized view log를 가질 수 있음.
- To fast refresh a materialized join view, you must create a materialized view log for each of the tables referenced by the materialized view.
=> master table들이 join된 materialized view는 각 master table에 materialized view log를 생성해야 함.
 
materialized view의 2가지 종류 )
 
  1. timestamp-based materialized view log
- timestamp 사용
- refresh 준비 시 몇 개의 setup opertions 필요
 
  1. SCN-based materialized view log
  - commit SCN data를 사용
  - timestamp와 달리 setup operations이 필요없어서 refresh 속도 향상
  - 생성 시 COMMIT SCN 명시 => 명시안하면 time-stamp materialized view 생성

'DATABASE > ORACLE' 카테고리의 다른 글

archive log 변경 방법  (0) 2023.04.18
Alert log 위치 확인 SQL  (0) 2023.04.18
Oracle 작업 예약  (0) 2023.04.14
linux 주요 Directory 설명  (0) 2023.04.14
ORACLE VERSION 확인  (0) 2023.04.12

댓글