본문 바로가기

오라클/오라클 실무

Materialized View란?

http://www.gurubee.net/lecture/1857

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=yysvip&logNo=220102868084

 

https://helols.tistory.com/31

 

Materialized View?

 

Materialized View(이하 MView) 이것은 제목 그대로 view 입니다.

 

하지만 일반 View 논리적인 테이블이고, Mview 물리적으로 존재하는 테이블 입니다. 물리적으로 존재한다는 것은 Data 일정 공간을 차지하고 있다는 거죠..

 

Mview 어떤 결과를 뽑아 내는 쿼리가 너무나도 빈번히 사용 경우, Query 실행 시간의 수행속도 향상을 위하여, 여러 가지의

Aggregate View 두어, 미리 비용이 많이 드는 조인이나, Aggreagate Operation 처리하여햐 하는 SQL 위해, 데이터베이스의 테이블로 저장 하여, 테이블을 조회 하도록 하는 입니다.

 

 간단하게 설명하면 대용량의 데이터를 SUM, MIN, MAX, AVG, COUNT(*) 이런 명령어를 사용해 너무나도 자주 조회하는 Query 수행속도 향상을 위해서, Qurey 결과 만큼의 새로운 테이블을 생성해 놓는 방법 입니다.

 

자주 사용되는 View 결과를 디스크에 저장해서 Query 속도를 향상시키는 개념입니다.

 

Materialized View 특징

-Mview 만들어두면 QUREY 수행속도를 증가 시킬 있습니다.

-SQL 응용프로그램에서 Mview 사용시 DBA 프로그램에 옇양을 끼치지 않고 언제든지 생성 제거가 가능합니다.

 

Mview 실행의 결과 행과 정의 모두 저장이 되고, 실행 결과 행으로 만들어진 테이블은 일정 공간을 차지합니다.

 

Mview관련 기초 테이블을 변경하면, Mview 생성된 Summary 테이블도 변경됩니다.

 

 

Materialized View 일반 View 차이점

가장 차이점은 Mview 결과값은 물리적으로 존재하는 것이고, 일반 View 결과값은 물리적으로 존재하지 않습니다.

 

SELECT * FROM USER_SEGMENTS 하면 Mview 나오지만 일반 View 나오지 않습니다.

 

Mview Mview 생성할 때의 Query 물리적으로 이미 데이터가 생성되어 있기 때문에 조회 속도가 빠릅니다.

하지만 View 단지 쿼리정보가 딕셔너리에 저장되어 있고 사용될때 SQL 다시 실행되는 것이기 때문에 Mview보다 느립니다.

Mview 생성된 결과값이 일반 View 조회하는 Data 결과값 보다 횔씬 적은 Row 조회하게 되죠.

 

Mview 관련 파라미터

-OPTIMZER_MODE : Mview 사용하기 위해서는 Cost-Based 옵티마이저 여야 하므로 ALL_ROWS, CHOOSE, 혹은 FIRST_ROWS 중의 어느 하나를 사용합니다.

 

QUREY_REWRITE_ENABLED : Qurey Rewrite 사용을 위해서는 TRUE 설정하면 됩니다.

 

QUERY_REWRITE_INTEGRITY : 오라클이 Query Rewrite 정확성을 제어하는 파라미터로, "STALE_TOLERATED", "TRUSTED","ENFORCED" 지정할 있습니다.

 

STABLE_TOLERATED : 사용되어진 기초테이블과 Consistent 하지 않은 View 이용한 Qurey Rewrite 허용 합니다.

 

TRUSTED : Optimizer메서 Mview 데이터가 정확하다고 간주하고 질의 수행.

Query Rewrite 허용 합니다.

 

ENFORCED : QUREY_REWRITE_INTEGRITY 기본값으로 , 사용자가 Intergrity Constraint 확인하여야 합니다.

 

COMPATIBLE : 사용할 있는 오라클 함수들의 Compatibility 결정하는 값으로 8.1.0 또는 이상으로 설정 해야 합니다.

 

 

'오라클 > 오라클 실무' 카테고리의 다른 글

AFTER COMMIT TRIGGER  (0) 2022.10.14
RMAN 백업셋팅  (0) 2022.08.18
RAC 명령어  (0) 2022.08.12
Dba_profile  (0) 2022.08.05
Impdp 가 실행 되었을 때 처리 순서  (0) 2022.08.01