Oracle에서 Views와 Materialized Views의 차이점은 무엇입니까?Oracle에서 Views와 Materialized Views의 차이점은 무엇입니까?
답변
구체화 된보기는 디스크 기반이며 조회 정의에 따라 주기적으로 갱신됩니다.
보기는 가상으로 만 액세스 할 때마다 쿼리 정의를 실행합니다.
뷰는 쿼리를 사용하여 기본 테이블에서 데이터를 가져옵니다.
구체화 된보기는 조회 결과 세트가 들어있는 디스크의 테이블입니다.
구체화 된보기는 색인이 적용된 표준보기를 사용하는 것이 가능하지 않거나 바람직하지 않을 때 응용 프로그램 성능을 높이기 위해 주로 사용됩니다. 구체화 된 뷰는 트리거를 통해 또는 ON COMMIT REFRESH
옵션을 사용하여 정기적으로 갱신 할 수 있습니다. 이 작업에는 몇 가지 추가 권한이 필요하지만 아무 것도 복잡하지 않습니다. ON COMMIT REFRESH
은 오라클 10 이상이 설치되어 있습니다.
Materialized View에 지정할 수있는 "새로 고치는 COMMIT"옵션이 있습니다. – Hybris95
고마워요! 나는 대답을 업데이트 할 것이다. 이 기능이 오라클에 추가 된시기를 알고 있습니까? –
뷰는 본질적으로 주어진 쿼리로 즉각적으로 채워진 논리적 테이블 형식의 구조입니다. 뷰 쿼리의 결과는 디스크의 아무 곳에도 저장되지 않으며 쿼리가 실행될 때마다 뷰가 다시 만들어집니다. 구체화 된 뷰는 데이터베이스에 저장되고 디스크에 기록되는 실제 구조입니다. 매개 변수는 작성시 정의 된 매개 변수에 따라 갱신됩니다.
DISK의 의미는 무엇입니까? 그것은 의미 테이블은 디스크의 일부가 아닌가요? 파일에 저장되어 있으며 DISK 액세스가 파일 액세스보다 빠릅니다 ...? –
뷰는 뷰를 쿼리 할 때 뷰 정의의 기본 테이블에있는 데이터를 평가합니다. 다른 곳에서는 데이터가 저장되지 않은 상태에서 테이블을 논리적으로 볼 수 있습니다. 보기의 장점은 항상 최신 데이터를 반환한다는 것입니다. 뷰의 단점은 뷰의 기반이되는 select 문이 얼마나 좋은지에 따라 성능이 달라진다는 것입니다. 뷰에서 사용하는 select 문이 많은 테이블을 조인하거나 인덱싱되지 않은 열을 기반으로 조인을 사용하면 뷰가 제대로 수행되지 않을 수 있습니다.
구체화 된보기는 select 명령문에 기초한 데이터의 논리적보기이므로 일반보기와 유사하지만 기본 쿼리 결과 세트가 테이블에 저장되었습니다. 이것의 장점은 구체화 된 뷰를 질의 할 때 색인을 생성 할 수있는 테이블을 조회한다는 것입니다. 또한 모든 조인은 구체화 된 뷰 새로 고침 시간에서 해결되었으므로 구체화 된 뷰에서 선택할 때마다 조인 가격을 한 번 (또는 구체화 된 뷰를 새로 고칠 때마다) 자주 지불합니다. 또한 쿼리 재 작성을 사용하면 Oracle은 구체화 된보기에서 읽는 방식으로 구체화 된보기의 소스에서 선택하는 쿼리를 최적화 할 수 있습니다. 구체화 된보기를 집계 테이블의 양식 또는 자주 실행되는 쿼리의 복사본으로 작성하는 경우 최종 사용자 응용 프로그램의 응답 시간을 크게 단축 할 수 있습니다. 그러나 단점은 구체화 된 뷰에서 가져온 데이터가 구체화 된 뷰가 새로 고쳐진 마지막 시간만큼만 최신 상태라는 것입니다.
구체화 된보기는 수동으로, 설정된 스케줄에 따라 또는 기본 테이블 중 하나에서 데이터의 변경을 감지하는 데이터베이스에 기초하여 갱신 될 수 있습니다. 구체화 된 뷰는 기본 테이블의 변경 데이터 캡처 소스 역할을하는 구체화 된 뷰 로그와 결합하여 증분 업데이트 할 수 있습니다.
구체화 된 뷰는 수천만 개의 행이있는 대형 팩트 테이블을 쿼리하면 쿼리 응답 시간이 길어서 응용 프로그램을 사용할 수없는 데이터웨어 하우징/비즈니스 인텔리전스 응용 프로그램에서 가장 자주 사용됩니다.
+1에 대한 자세한 설명은 있지만 쿼리 재 작성의 단점은 무엇입니까? 질의 재 작성을 통해 오라클이 질의를 더욱 최적화 할 수 있다면 항상 질의를 다시 작성해야합니다. –
@Rosdi, 그는 다음과 같이 말했습니다. "구체화 된 뷰에서 얻은 데이터는 구체화 된 뷰가 마지막으로 새로 고쳐진 시점과 동일합니다." –
마이크 McAllister의 꽤 철저한 대답에 추가 ...
구체화 뷰보기 만 쿼리가 컴파일러에 의해 간단한 고려할 때 데이터베이스 검출 변화를 자동 를 새로 설정할 수있다. 너무 복잡한 것으로 간주되면 mview 테이블의 변경된 행만 업데이트하기 위해 소스 테이블의 변경 사항을 추적하는 내부 트리거를 기본적으로 설정할 수 없습니다.
구체화 된보기를 작성하면 오라클이 mview 과 동일한 이름이 인 테이블로 생성되므로 혼동 될 수 있습니다.
구체화 된 뷰를 지원하는 테이블은 동일한 이름을 사용하지 않습니다 보기로. –
@JeffreyKemp, 확실합니까? 여기에 허용 대답은 http://stackoverflow.com/a/33552513 그렇지 않으면 주장한다. 그래, 그래,이 2010 년 당신이 댓글을 달았 다를 수 있습니다 ... – leqid
위의 내 코멘트는 이전 버전 (아마 9i)에 있어야합니다. 맞습니다. MV는 적어도 현대 버전에서는 동일한 이름의 테이블을 얻습니다. –
보기 구체화 - 테이블을
비 materiased 쿼리의 결과 집합을 포함하는 디스크보기 - 기본 테이블
보기에서 데이터를 끌어 쿼리 SQL 쿼리 일 뿐이며 쿼리의 출력을 가져와 저장 공간을 차지하지 않거나 데이터를 포함하지 않는 가상 테이블처럼 보이게합니다.
그러나 구체화 된보기은 별도의 스키마 오브젝트 (즉, 저장 영역을 차지하고 데이터를 포함)에 조회 결과를 저장하는 스키마 오브젝트입니다. 이것은 구체화 된 뷰가 테이블 데이터의 물리적으로 분리 된 사본을 리턴 함을 나타냅니다.
보기 : 뷰는 단지 명명 된 쿼리입니다. 아무것도 저장하지 않습니다. 뷰에 쿼리가 있으면 뷰 정의에 대한 쿼리를 실행합니다. 실제 데이터는 테이블에서 가져옵니다.
구체화보기 : 물리적으로 데이터를 저장하고 주기적으로 업데이트됩니다. MV를 쿼리하는 동안 MV에서 데이터를 제공합니다.
초당 최대 최신 정보 일 필요가없는 데이터에 대한 성능이 필요한 경우 구체화 된보기는 더 좋지만 데이터는 표준보기보다 오래됩니다. 일반적으로 BI 리포트는 구체화 된 뷰를 통해 많은 이점을 얻습니다. – Marthinus
@Marthinus - REFRESH ON COMMIT 인 구체화 된보기를 제외하고는 정확합니다. MV는 커밋 된 데이터를 정확히 반환합니다. –
DISK의 의미는 무엇입니까? 그것은 의미 테이블은 디스크의 일부가 아닌가요? 파일에 저장되어 있으며 DISK 액세스가 파일 액세스보다 빠릅니다 ...? –