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 - 먼저 fast 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