문제

Oracle의 뷰와 구체화된 뷰의 차이점은 무엇입니까?

도움이 되었습니까?

해결책

구체화된 뷰는 디스크 기반이며 쿼리 정의에 따라 주기적으로 업데이트됩니다.

뷰는 가상 전용이며 액세스될 때마다 쿼리 정의를 실행합니다.

다른 팁

견해

뷰 정의의 기초가 되는 테이블의 데이터를 평가합니다. 뷰가 쿼리될 때.이는 다른 곳에 데이터가 저장되지 않은 테이블의 논리적 보기입니다.

뷰의 장점은 다음과 같습니다. 항상 최신 데이터를 당신에게 돌려드립니다.그만큼 뷰의 단점은 성능이 떨어진다는 것입니다. 뷰의 기반이 되는 select 문이 얼마나 좋은지에 따라 달라집니다.뷰에서 사용하는 select 문이 많은 테이블을 조인하거나 인덱싱되지 않은 열을 기반으로 조인을 사용하는 경우 뷰 성능이 저하될 수 있습니다.

구체화된 뷰

데이터의 논리적 보기(select 문을 기반으로 함)라는 점에서 일반 보기와 유사합니다. 기본 쿼리 결과 집합이 테이블에 저장되었습니다..이것의 장점은 구체화된 뷰를 쿼리할 때 당신은 테이블을 쿼리하고 있습니다, 색인이 생성될 수도 있습니다.

또한 구체화된 뷰를 새로 고칠 때 모든 조인이 해결되었으므로 구체화된 뷰에서 선택할 때마다가 아니라 한 번만(또는 구체화된 뷰를 새로 고칠 때마다) 조인 비용을 지불하면 됩니다.또한 쿼리 재작성이 활성화되면 Oracle은 구체화된 뷰에서 읽는 방식으로 구체화된 뷰의 소스에서 선택하는 쿼리를 최적화할 수 있습니다.구체화된 뷰를 집계 테이블 형태로 생성하거나 자주 실행되는 쿼리의 복사본으로 생성하는 경우 최종 사용자 애플리케이션의 응답 시간을 크게 단축할 수 있습니다.그만큼 그러나 단점은 구체화된 뷰에서 반환되는 데이터가 구체화된 뷰가 마지막으로 새로 고쳐진 시점만큼만 최신 상태라는 것입니다..


구체화된 뷰는 설정된 일정에 따라 수동으로 새로 고치도록 설정할 수 있습니다. 기본 테이블 중 하나의 데이터 변경을 감지하는 데이터베이스를 기반으로 합니다..구체화된 뷰는 구체화된 뷰 로그와 결합하여 점진적으로 업데이트할 수 있습니다. 변경 데이터 캡처 소스로 작동 기본 테이블에.

구체화된 뷰는 수천만 개의 행이 포함된 대규모 팩트 테이블을 쿼리하면 쿼리 응답 시간이 발생하여 사용할 수 없는 응용 프로그램이 되는 데이터 웨어하우징/비즈니스 인텔리전스 응용 프로그램에서 가장 자주 사용됩니다.


구체화된 뷰는 다음과 유사하게 일관된 순간을 보장하는 데도 도움이 됩니다. 스냅샷 격리.

뷰는 쿼리를 사용하여 기본 테이블에서 데이터를 가져옵니다.

구체화된 뷰는 쿼리 결과 집합을 포함하는 디스크의 테이블입니다.

구체화된 뷰는 인덱스가 적용된 표준 뷰를 사용하는 것이 가능하지 않거나 바람직하지 않을 때 응용 프로그램 성능을 높이는 데 주로 사용됩니다.구체화된 뷰는 트리거를 사용하거나 다음을 사용하여 정기적으로 업데이트할 수 있습니다. ON COMMIT REFRESH 옵션.여기에는 몇 가지 추가 권한이 필요하지만 복잡하지는 않습니다. ON COMMIT REFRESH 적어도 Oracle 10부터 적용되었습니다.

뷰는 본질적으로 주어진 쿼리에 의해 즉석에서 채워지는 논리적 테이블과 같은 구조입니다.뷰 쿼리의 결과는 디스크 어디에도 저장되지 않으며 쿼리가 실행될 때마다 뷰가 다시 생성됩니다.구체화된 뷰는 데이터베이스 내에 저장되고 디스크에 기록되는 실제 구조입니다.생성 시 정의된 매개변수를 기반으로 업데이트됩니다.

구체화된 뷰 - 쿼리 결과 집합을 포함하는 디스크의 테이블

비물질화 뷰 - 기본 테이블에서 데이터를 가져오는 쿼리

보다: 보기는 명명된 쿼리일 뿐입니다.아무것도 저장하지 않습니다.뷰에 쿼리가 있으면 뷰 정의에 대한 쿼리를 실행합니다.실제 데이터는 테이블에서 나옵니다.

구체화된 뷰: 데이터를 물리적으로 저장하고 주기적으로 업데이트됩니다.MV를 쿼리하는 동안 MV의 데이터를 제공합니다.

Mike McAllister의 철저한 답변에 추가 ...

구체화된 뷰는 새로 고치도록만 설정할 수 있습니다. 자동으로 뷰 쿼리가 고려될 때 데이터베이스를 통해 변경 사항을 감지합니다. 단순한 컴파일러에 의해.너무 복잡하다고 생각되면 소스 테이블의 변경 사항을 추적하여 mview 테이블의 변경된 행만 업데이트하는 본질적인 내부 트리거를 설정할 수 없습니다.

구체화된 뷰를 생성하면 Oracle이 mview와 그리고 같은 이름을 가진 테이블로, 이는 상황을 혼란스럽게 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top