1. M View(Materialized View) 란?
2. M View Parameter
3. M View 특징
4. 실습
5. M view생성시 옵션 정리
View 는 논리적인 테이블이고 M View는 물리적인 테이블이다.
즉 데이터가 일정한 공간에 저장되어 있다는 뜻이다.
어떤 결과를 얻기위해 수행되는 쿼리가 빈번하게 일어날경우 이결과값을 데이터베이스내에 한 테이블에 저장하여 수행속도를 향상시키기 위해 사용된다.
- SUM, MAX, MIN, AVG, COUNT 등과 같이 그룹함수를 미리 계산해 놓을때 사용.
- USER_SEGMENTS에서 확인 가능하다.
즉 데이터가 일정한 공간에 저장되어 있다는 뜻이다.
어떤 결과를 얻기위해 수행되는 쿼리가 빈번하게 일어날경우 이결과값을 데이터베이스내에 한 테이블에 저장하여 수행속도를 향상시키기 위해 사용된다.
- SUM, MAX, MIN, AVG, COUNT 등과 같이 그룹함수를 미리 계산해 놓을때 사용.
- USER_SEGMENTS에서 확인 가능하다.
2. M View Parameter
- OPTIMIZER_MODE
- QUERY_REWRITE_ENABLED
- QUERY_REWRITE_INTEGRITY
- COMPATIBLE
- QUERY_REWRITE_ENABLED
- QUERY_REWRITE_INTEGRITY
- COMPATIBLE
3. M View 특징
우리가 흔희 알고 있는 View는 실시간 데이터는 유지하지만 시간이 많이 걸린다는 단점이 있다.
그에 반해 Summary Table이라는 것이 있다. 일명 CTAS(CREATE TABLE AS SELECT ... ) 라 불린다. 이건 실시간 데이터는 아니지만 성능상 장점이 있다.
View와 Summary Table의 장점을 다 갖추고 있는것이 바로 M View이다.
그에 반해 Summary Table이라는 것이 있다. 일명 CTAS(CREATE TABLE AS SELECT ... ) 라 불린다. 이건 실시간 데이터는 아니지만 성능상 장점이 있다.
View와 Summary Table의 장점을 다 갖추고 있는것이 바로 M View이다.
4. 실습
(1) M View를 생성하기 위해서는 Query rewrite 권한과 Create Materialized View 권한을 해당 유저에게 부여해야 한다.
(2) 권한을 부여받은 유저로 접속하여 M View 생성(TABLESPACE 지정 가능)
(3) M View를 조회해보자.
(4) 30번 부서의 사원의 max sal 이 현재 2850이다. .
(5) 7698 사원의 급여를 3000으로 변경후 M View 조회.
M view에 변경된 내용이 반영되어 있는것을 볼수 있다.
(2) 권한을 부여받은 유저로 접속하여 M View 생성(TABLESPACE 지정 가능)
(3) M View를 조회해보자.
(4) 30번 부서의 사원의 max sal 이 현재 2850이다. .
(5) 7698 사원의 급여를 3000으로 변경후 M View 조회.
M view에 변경된 내용이 반영되어 있는것을 볼수 있다.
5. M view생성시 옵션 정리
- BUILDE IMMEDIATE : M view 생성과 동시에 데이터도 생성.
- BUILDE DEFERRED : M view 생성은 하지만 데이터는 추후에 생성.
- REFRESH : M view의 데이터를 새로 업데이트 하는 시기와 방법을 결정
- BUILDE DEFERRED : M view 생성은 하지만 데이터는 추후에 생성.
- REFRESH : M view의 데이터를 새로 업데이트 하는 시기와 방법을 결정
<시기>
.ON COMMIT : 기초 테이블에 COMMIT이 발생하였을때 발생
.ON DEMAND : 사용자가 DBMS_MVIEW 패키지를 실행하였을때 발생
<방법>
.COMPLETE : M view의 정의에 따라 M view의 데이터 전체가 refresh 되는것으로 ATOMIC_REFRESH=TRUE와 COMPLETE 으로 설정한 경우
.FAST :새로운 데이터가 삽입되었을때마다 점진적으로 refresh되는 경우
.FORCE : 이경우 먼저 FAST refresh가 가능한지 점검후 가능하면 이를 적용하고 아니면 COMPLETE refresh를 적용(default)
.NEVER : Refresh를 사용하지 않는다.
.ON COMMIT : 기초 테이블에 COMMIT이 발생하였을때 발생
.ON DEMAND : 사용자가 DBMS_MVIEW 패키지를 실행하였을때 발생
<방법>
.COMPLETE : M view의 정의에 따라 M view의 데이터 전체가 refresh 되는것으로 ATOMIC_REFRESH=TRUE와 COMPLETE 으로 설정한 경우
.FAST :새로운 데이터가 삽입되었을때마다 점진적으로 refresh되는 경우
.FORCE : 이경우 먼저 FAST refresh가 가능한지 점검후 가능하면 이를 적용하고 아니면 COMPLETE refresh를 적용(default)
.NEVER : Refresh를 사용하지 않는다.
- ENABLE QUERY REWRITE : M view 생성시 이 옵션을 주어야 임의의 SQL문장을 처리시 QUERY REWRITE 를 고려한다. 이는 QRY 재작성의 기능이다. 이전의 쿼리를 수정안하고 재작성이 가능한 기능
- QUERY REWRITE : 쿼리 재작성 또는 덮어쓰기 정도로 보면 된다. 이미 생성된 뷰의 쿼리를 재작성 하는 기능.
- QUERY REWRITE : 쿼리 재작성 또는 덮어쓰기 정도로 보면 된다. 이미 생성된 뷰의 쿼리를 재작성 하는 기능.
'Oracle > admin' 카테고리의 다른 글
SQL TRACE ,tkprof (0) | 2015.09.14 |
---|---|
Tuning 참고 (0) | 2015.09.14 |
커서 공유 (0) | 2015.09.14 |
VIEW 생성,VIEW 조회 권한 부여,SYNONYM 생성 (0) | 2015.09.14 |
v$lock 뷰의 LMODE에 대해.. (0) | 2015.09.14 |