구체화 된 뷰 대신 테이블을 사용하지 않는 이유는 무엇입니까?


53

Oracle 데이터베이스를 처음 사용합니다. 올바르게 이해 한 경우 구체화 된 뷰는 결과 집합이 데이터베이스에 실제 테이블로 저장되는 뷰이며이 뷰 / 테이블은 일부 매개 변수에 따라 새로 고쳐집니다. 뷰가 실제 테이블로 저장된 경우 데이터를 먼저 테이블에 저장하지 않겠습니까? 그렇다면 테이블 대신 구체화 된 뷰를 사용하면 어떤 이점이 있습니까?

답변:


59

구체화 된 뷰를 사용하면 얻을 수있는 가장 큰 이점 중 하나는 Oracle이 데이터를 동기화 상태로 유지한다는 것입니다. 별도의 집계 테이블이있는 경우 데이터를 동기화 된 상태로 유지해야합니다. 일반적으로 합리적인 양의 코드와 적절한 수준의 테스트가 필요하며 대부분의 조직은 집계 테이블이 동기화되지 않도록하는 실수를 범하는 실수를 저지 릅니다. 집계 테이블의 증분 새로 고침을 구현하려고 할 때 특히 그렇습니다.

또 다른 주요 이점은 설정에 따라 사용자가 기본 테이블에 대해 쿼리를 발행 할 때 쿼리 재 작성을 사용하여 구체화 된 뷰를 사용할 수 있다는 것입니다. 예를 들어 일별, 월별 및 연간 집계 결과를 생성하는 세부 사항 테이블에 대한 기존 보고서가 많은 경우 기본 테이블에서 매일 레벨로 데이터를 집계하는 구체화 된보기를 작성할 수 있습니다. 기존의 모든 쿼리에 대해 구체화 된 뷰를 활용하십시오. 따라서 새로운 집계 테이블을 사용하거나 DBMS_ADVANCED_REWRITE쿼리를 직접 다시 작성 하기 위해 수십 개의 보고서를 작성하고 다시 작성하지 않고도 데이터웨어 하우스에서보고 워크로드를 훨씬 쉽게 최적화 할 수 있습니다 .


14

기본 테이블이 업데이트되면 구체화 된 뷰가 자동으로 업데이트됩니다.


1
그 주 ON DEMAND기본 새로 고침 동작입니다. 로 구체화 된보기는로 작성해야합니다 ON COMMIT. 구체화 된 관점을 유지하는 것은 자유롭지 않습니다. 그래도 트리거보다 저렴합니다.
durette

10

MV를 사용하는 좋은 사례 중 하나는 때때로 데이터를 집계하고이 요약 정보를 큰 테이블에서 자주 그리고 빠르게 얻고 자하는 것입니다. 구체화 된 뷰가 없으면 일부 테이블을 비정규 화하고 코드를 통해 집계를 유지하거나 많은 행 집합을 반복적으로 스캔해야합니다. 어느 쪽이든 대시 보드 및 유사한 온라인 응용 프로그램에서 항상 허용되는 것은 아닙니다. 결과를 별도의 테이블에 보관하면 애플리케이션 코드가 복잡해지며 @Justin Cave가 말했듯이 수동으로 집계 된 데이터가 동기화되어 있는지 확인해야합니다. 원래 테이블의 데이터와 함께.


4

오라클 직원은 아니지만 다른 사용 사례는 타사 솔루션입니다. 이들은 일반적으로 설계 변경을 지원하지 않지만 MV는 코드에 "보이지"않지만 사용자 지정보고 / 데이터 추출에는 액세스 할 수 있습니다.

스토리지 비용이 발생하고 삽입 / 업데이트 시간에 영향을 줄 수 있다는 점에서 자유롭지는 않지만, 구체화 된 데이터를 "직선보기"대 검색하거나 실제 테이블을 작성하고 주변 ETL을 유지 보수하는 데 소요 된 시간으로 상쇄 될 수 있습니다.

마지막으로, 그렇게하면 공급 업체와의 상담 계약이 무효화 될 수 있습니다. 변호사 -blah-blah-blah


2

대신에 직접가는 구체화 된 뷰 설명해 보자 보기 .

기본적으로 뷰는 테이블과 달리 논리적으로 존재합니다. 사용자에게 특정 열을 숨기려면 테이블을 사용할 수 없습니다. 보안을 달성 할 수있는 뷰를 만듭니다.

유스 케이스 : 보기가 그룹별로 10 개의 테이블과 관련되어 있고 함수에 수백만 개의 행이있는 경우 실행하는 데 시간이 오래 걸립니다.

구체화 된 뷰를 통해 데이터를 더 빠르게 얻을 수 있습니다. 구체화 된 뷰는 실제로 데이터베이스에 존재합니다. 기본 테이블이 업데이트 될 때마다 구체화 된보기가 업데이트됩니다.

구체화 된 뷰는 쿼리 정의에 따라 주기적으로 업데이트되며 테이블에서는이를 수행 할 수 없습니다.


0

구체화 된 뷰는 주기적으로 자동 새로 고침되도록 설정할 수 있습니다. 데이터를 자르거나 다시로드하려면 테이블에 추가 코드가 필요할 수 있습니다.

예 : 피크가 아닌 시간 동안 자동으로 새로 고치도록 여러 테이블의 데이터가있는 구체화 된보기를 설정할 수 있습니다. 실제 테이블은 데이터를 자르거나 다시로드하기 위해 추가 코드가 필요합니다.

테이블보다는 구체화 된 뷰에서 보안을보다 효과적으로 제어 할 수 있습니다.


0

구체화 된 뷰는 쿼리 결과가 포함 된 데이터베이스 개체입니다. 원격으로 위치한 데이터의 로컬 사본이거나 테이블 데이터의 집계를 기반으로 요약 테이블을 작성하는 데 사용됩니다. http://www.oraappdata.com/2016/04/materialized-view.html


1
질문은 구체화 된 관점이 아니라 왜 그리고 어떻게 사용하는지에 관한 것이 었습니다.
Twinkles
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.