prosource

Oracle에서 Views와 Materialized Views의 차이점은 무엇입니까?

probook 2023. 3. 4. 15:00
반응형

Oracle에서 Views와 Materialized Views의 차이점은 무엇입니까?

Oracle에서 Views와 Materialized Views의 차이점은 무엇입니까?

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

보기는 가상으로만 표시되며 액세스할 때마다 조회 정의를 실행합니다.

표시

뷰 쿼리 정의의 기반이 되는 테이블의 데이터를 평가합니다.이 뷰는 테이블을 논리적으로 표시하며 데이터는 다른 곳에 저장되지 않습니다.

뷰의 장점은 항상 최신 데이터를 사용자에게 반환한다는 것입니다.뷰의 단점은 뷰의 퍼포먼스가 뷰의 기본이 되는 선택 스테이트먼트의 양에 따라 다르다는 것입니다.뷰에서 사용되는 select 문이 많은 테이블을 결합하거나 색인화되지 않은 열을 기반으로 결합을 사용하면 뷰의 성능이 저하될 수 있습니다.

구체화된 뷰

이러한 뷰는 일반 뷰와 비슷하지만 (선택문을 기반으로) 데이터에 대한 논리적 뷰라는 점에서 기본 쿼리 결과 세트가 테이블에 저장되었습니다.이 방법의 장점은 구체화된 뷰를 쿼리할 때 테이블을 쿼리하고 이 테이블도 인덱싱할 수 있다는 것입니다.

또한 구체화 뷰 새로 고침 시 모든 결합이 해결되므로 구체화 뷰에서 선택할 때마다 결합 비용을 한 번(또는 구체화 뷰를 새로 고치는 횟수만큼) 지불해야 합니다.또한 쿼리 개서를 활성화하면 Oracle은 구체화된 뷰의 소스에서 선택한 쿼리를 구체화된 뷰에서 읽을 수 있도록 최적화할 수 있습니다.구체화된 뷰를 집계 테이블의 형태 또는 자주 실행되는 쿼리의 복사본으로 작성하는 경우 최종 사용자 애플리케이션의 응답 시간을 크게 단축할 수 있습니다., 구체화 뷰에서 반환되는 데이터는 구체화 뷰를 마지막으로 갱신했을 때에만 최신이 된다는 단점이 있습니다.


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

구체화된 뷰는 데이터 웨어하우징/비즈니스 인텔리전스 애플리케이션에서 가장 많이 사용됩니다. 데이터 웨어하우징/비즈니스 인텔리전스 애플리케이션에서는 수천만 행의 대규모 팩트 테이블을 쿼리하면 쿼리 응답 시간이 발생하여 애플리케이션을 사용할 수 없게 됩니다.


구체화된 뷰는 스냅샷 격리와 마찬가지로 일관된 시점을 보장하는 데 도움이 됩니다.

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

구체화된 보기는 조회의 결과 세트를 포함하는 Disk의 테이블입니다.

구체화된 뷰는 인덱스가 적용된 표준 뷰를 사용하는 것이 적절하지 않거나 바람직하지 않을 때 애플리케이션 성능을 높이기 위해 주로 사용됩니다. 를 할 수 .ON COMMIT REFRESH 가지 하지 않습니다여기에는 몇 가지 추가 권한이 필요하지만 복잡하지는 않습니다. ON COMMIT REFRESH오라클 10입니다.

구체화된 뷰 - 쿼리의 결과 세트를 포함하는 디스크의 테이블

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

뷰는 기본적으로 특정 쿼리에 의해 즉시 채워지는 논리 테이블과 같은 구조입니다.보기 조회 결과는 Disk의 아무 곳에도 저장되지 않으며 조회가 실행될 때마다 보기가 재생성됩니다.구체화된 뷰는 데이터베이스에 저장되어 디스크에 기록되는 실제 구조입니다.생성 시 정의된 매개 변수를 기준으로 업데이트됩니다.

보기: 보기는 명명된 쿼리일 뿐입니다.아무것도 저장되지 않습니다.뷰에 쿼리가 있는 경우 뷰 정의에 대한 쿼리를 실행합니다.실제 데이터는 표에서 가져옵니다.

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

마이크 맥칼리스터의 아주 철저한 답변에 더해서...

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

구체화된 뷰를 작성하면 Oracle에서 mview와 동일한 이름의 테이블로 모두 작성되므로 혼란스러울 수 있습니다.

구체화 뷰는 선택한 쿼리에 의해 구동되는 데이터의 논리 뷰이지만 쿼리 결과는 테이블 또는 디스크에 저장되며 쿼리의 정의도 데이터베이스에 저장됩니다.

구체화 뷰의 성능은 일반 뷰보다 우수합니다. 구체화 뷰의 데이터가 테이블에 저장되고 테이블이 인덱싱될 수 있기 때문입니다. 구체화 뷰 새로 고침 시간에 결합을 위해 더 빠르게 수행되므로 뷰의 경우처럼 매번 결합 문을 열 필요가 없습니다.

다른 차이점으로는 View의 경우 항상 최신 데이터를 가져오지만 Materialized View의 경우 최신 데이터를 얻기 위해 보기를 새로 고쳐야 합니다.Materialized 뷰의 경우 MV를 새로 고칠 수 있도록 추가 트리거 또는 자동 방법이 필요합니다. 데이터베이스의 뷰에는 이 방법이 필요하지 않습니다.

언급URL : https://stackoverflow.com/questions/93539/what-is-the-difference-between-views-and-materialized-views-in-oracle

반응형