Programming/Oracle

MVIEW란?

초록깨비 2021. 4. 27. 11:04
728x90

1. MView(Materialized View)

 - 일반 View : 논리적인 테이블

                   실시간 데이터를 유지하지만 조회 시 시간이 많이 걸림

 - MView     : 물리적인 공간에 저장 됨 

 

2. 언제 MView 사용하나?  

 - 빈번하게 발생하는 특정쿼리가 있는 경우, 쿼리 실행 시간의 수행 속도를 향상 시키기 위해 

 - SUM, MIN, MAX, AVG, COUNT등 그룹함수를 미리 계산해 놓을 때 

 - USER_SEGMENTS 에서 확인 가능

 

3.  Materialized View를 생성하기 위한 권한  부여  

     sql> GRANT QUERY REWRITE TO user_name;
     sql> GRANT CREATE MATERIALIZED VIEW TO user_name

 

 

4. MView 생성 예제   

   sql> CREATE MATERIALIZED VIEW MVIW_TEST 
          BUILD IMMEDIATE
          REFRESH
          COMPLETE
          ON DEMAND
          ENABLE QUERY REWRITE
          AS
            SELECT A.DEPTNO, 
                      MAX(A.SAL)  
             FROM EMP A, DEPT B  
            WHERE A.DEPTNO = B.DEPTNO
           GROUP BY A.DEPTNO;

 

5. MView 옵션 

    - BUILD IMMEDIATE

         . MView 생성과 동시에 데이터도 생성 하는 옵션
    - BUILD DEFERRED

         . MView 생성은 하나 데이터는 추후에 생성 하는 옵션
    - REFRESH : 새로고침
 시기와 방법(테이블과 MView의 동기화 작업)    

          . ON COMMIT - 테이블에 Commit  일어날  refresh 

 

          . ON DEMAND - DBMS_MVIEW 패키지(REFRESH, REFRESH_ALL_MVIEWS, REFRESH_DEPENDENT)

                              실행시 refresh  

           

 

          . COMPLETE - 데이터 전체 refresh  


          . FAST - 
새로운 데이터가 삽입될 때마다 점진적으로 refresh 

         . FORCE - 먼저 f
ast refresh 적용, 
                      적용 안되면
complete refresh 적용(default)

         . NEVER - refresh 안함

 
 
    - ENABLE QUERY REWRITE -
쿼리 재작성 기능   

  

 

6.
수동 갱신
   sql> EXECUTE DBMS_MVIEW.REFRESH('MVIEW_TEST') ;  

7. QUERY REWRITE 추가 하는 방법

 

  sql > ALTER MATERIALIZED VIEW MVIEW_TEST ENABLE QUERY REWRITE ;   
  

8. MView parameter 

    . optimizer_mode
    . query_rewrite_enabled
    . query_rewrite_integrity
    . compatible

 

728x90