답변:
구체화 된 뷰는 디스크 기반이며 쿼리 정의에 따라 정기적으로 업데이트됩니다.
뷰는 가상 전용이며 액세스 할 때마다 쿼리 정의를 실행합니다.
뷰를 조회 할 때 뷰 정의의 기본이되는 테이블의 데이터를 평가합니다 . 다른 곳에 데이터가 저장되지 않은 테이블의 논리적 뷰입니다.
보기의 단점은 항상 최신 데이터를 사용자에게 반환 한다는 것입니다 . 뷰 의 단점은 뷰의 성능 이 뷰의 기반이되는 select 문의 성능에 달려 있다는 것입니다. 뷰에서 사용 된 select 문이 많은 테이블을 조인하거나 인덱싱되지 않은 열을 기반으로하는 조인을 사용하면 뷰의 성능이 저하 될 수 있습니다.
선택문을 기반으로 데이터의 논리적보기라는 점에서 일반보기와 유사하지만 기본 쿼리 결과 세트가 테이블에 저장되었습니다 . 이것의 장점은 구체화 된 뷰를 쿼리 할 때 인덱스 될 수 있는 테이블을 쿼리한다는 것입니다.
또한 모든 조인이 구체화 된보기 새로 고침 시간에 해결되었으므로 구체화 된보기에서 선택할 때마다 결합 가격을 한 번 (또는 구체화 된보기를 새로 고치는 빈도)으로 지불합니다. 또한 쿼리 다시 쓰기가 활성화되면 Oracle은 구체화 된보기에서 읽는 방식으로 구체화 된보기의 소스에서 선택하는 쿼리를 최적화 할 수 있습니다. 구체화 된 뷰를 집계 테이블의 형태로 또는 자주 실행되는 쿼리의 사본으로 작성하는 상황에서는 최종 사용자 애플리케이션의 응답 시간이 크게 단축 될 수 있습니다. 그만큼 단점은 구체화 된보기에서 가져온 데이터가 구체화 된보기를 마지막으로 새로 고친 시점의 최신 정보 일뿐 입니다.
구체화 된 뷰를 수동으로, 설정된 일정에 따라 새로 고치도록 설정할 수 있습니다. 기본 테이블 중 하나에서 데이터의 변경을 감지하는 데이터베이스를 기반 . 구체화 된 뷰는 기초 화 된 테이블에서 변경 데이터 캡처 소스 역할을 하는 구체화 된 뷰 로그와 결합하여 점진적으로 업데이트 할 수 있습니다 .
구체화 된 뷰는 데이터웨어 하우징 / 비즈니스 인텔리전스 응용 프로그램에서 가장 많이 사용되며, 수천만 행의 큰 팩트 테이블을 쿼리하면 쿼리 응답 시간이 발생하여 응용 프로그램을 사용할 수 없게됩니다.
구체화 된 뷰는 스냅 샷 격리 와 유사한 일관된 시간을 보장합니다 .
뷰는 쿼리를 사용하여 기본 테이블에서 데이터를 가져옵니다.
구체화 된 뷰는 쿼리 결과 집합이 포함 된 디스크의 테이블입니다.
구체화 된 뷰는 기본적으로 인덱스가 적용된 표준 뷰를 사용할 수 없거나 바람직하지 않은 경우 응용 프로그램 성능을 향상시키는 데 사용됩니다. 구체화 된 뷰는 트리거를 통해 또는 ON COMMIT REFRESH
옵션 을 사용하여 정기적으로 업데이트 할 수 있습니다 . 여기에는 몇 가지 추가 권한이 필요하지만 복잡하지는 않습니다. ON COMMIT REFRESH
Oracle 10 이상부터 사용되었습니다.
뷰는 본질적으로 주어진 쿼리에 의해 즉시 채워지는 논리적 테이블과 같은 구조입니다. 보기 조회 결과는 디스크의 어느 곳에도 저장되지 않으며 조회가 실행될 때마다보기가 다시 작성됩니다. 구체화 된 뷰는 데이터베이스 내에 저장되고 디스크에 기록되는 실제 구조입니다. 작성시 정의 된 매개 변수를 기반으로 업데이트됩니다.
보기 : 보기는 명명 된 쿼리 일뿐입니다. 아무것도 저장하지 않습니다. 보기에 조회가 있으면보기 정의의 조회를 실행합니다. 실제 데이터는 테이블에서 가져옵니다.
구체화 된 뷰 : 데이터를 물리적으로 저장하고 주기적으로 업데이트합니다. MV를 쿼리하는 동안 MV의 데이터를 제공합니다.
Mike McAllister의 철저한 답변에 추가 ...
구체화 된 뷰는 컴파일러 가 뷰 쿼리를 단순 하다고 간주 할 때 변경 사항을 감지하는 데이터베이스를 통해 자동으로 새로 고치도록 설정할 수 있습니다 . 너무 복잡하다고 생각되면 소스 테이블의 변경 사항을 추적하여 mview 테이블의 변경된 행만 업데이트하기 위해 본질적으로 내부 트리거를 설정할 수 없습니다.
구체화 된 뷰를 만들 때 Oracle은 mview 와 같은 이름을 가진 테이블로 테이블을 생성하므로 혼동 될 수 있습니다.
구체화 된 뷰는 선택 쿼리에 의한 데이터 중심의 논리적 뷰이지만 쿼리 결과는 테이블 또는 디스크에 저장되며 쿼리 정의도 데이터베이스에 저장됩니다.
구체화 된 뷰의 성능은 구체화 된 뷰의 데이터가 테이블에 저장되고 테이블이 인덱스 될 수 있으므로 구체화 된 뷰 새로 고침 시간에 조인이 이루어 지므로 매번 불필요 할 필요가 없기 때문에 일반 뷰보다 낫습니다. 보기의 경우처럼 조 인문.
또 다른 차이점으로는 View의 경우 항상 최신 데이터를 얻지 만 Materialized View의 경우 최신 데이터를 얻기 위해 뷰를 새로 고쳐야합니다. 구체화 된 뷰의 경우 MV를 새로 고칠 수 있도록 추가 트리거 또는 자동 방법이 필요합니다. 데이터베이스의 뷰에는 필요하지 않습니다.