구체화된 견해란 무엇입니까?
일상 영어로 어떤 견해나 구체화된 견해가 있는지 누가 나에게 설명해 줄 수 있나요?저는 구체화된 견해에 대해 읽고 있지만 이해할 수 없습니다.
그럼요.
일반적인 보기는 가상 테이블을 정의하는 쿼리입니다. 테이블에 데이터가 저장되어 있지 않고 실행함으로써 즉시 데이터를 생성할 수 있습니다.
구체화된 보기는 쿼리가 실행되고 데이터가 실제 테이블에 저장되는 보기입니다.
구체화된 보기의 데이터는 사용자가 지시하면 새로 고쳐집니다.
몇 가지 사용 사례:
한 인스턴스에 마스터 데이터를 저장하고 다른 인스턴스에 대한 데이터의 최신 복사본을 저장하려는 여러 Oracle 인스턴스가 있습니다.이들 사이의 데이터베이스 링크가 항상 가동되고 작동한다고 가정하고 싶지는 않습니다.그래서 우리는 다음과 같은 쿼리를 사용하여 다른 인스턴스에 대해 구체화된 보기를 설정했습니다.
select a,b,c from mytable@master
매일 새로 고치라고 해요구체화된 보기는 쿼리 다시 쓰기에도 유용합니다.데이터 웨어하우스에 자료표가 있고 도서관에서 빌린 모든 책, 날짜 및 대출자가 있다고 가정해 보겠습니다.그리고 그 직원은 정기적으로 책을 몇 번이나 빌렸는지 알고 싶어합니다.그런 다음 다음 다음과 같이 구체화된 보기를 작성합니다.
select book_id, book_name, count(*) as borrowings from book_trans group by book_id, book_name
원하는 업데이트 빈도(일반적으로 창고 자체의 업데이트 빈도)에 대해 설정합니다.가▁the▁▁book▁runs에 대해 특정한 책에 쿼리를 한다면,book_trans
table, 쓰기 은 테블이, 오의쿼의 을 걷는 를 볼 수 입니다.book_trans
.
일반적으로 성능과 안정성을 위해 구체화된 뷰를 구축하는 경우가 많습니다. 네트워크가 불안정해지거나 업무 시간 외에 긴 쿼리를 수행하는 경우가 많습니다.
보기는 기본적으로 "이름이 지정된" SQL 문입니다.실제 테이블처럼 쿼리에서 뷰를 참조할 수 있습니다.보기에 액세스할 때 보기 뒤에 있는 쿼리가 실행됩니다.예:
create view my_counter_view(num_rows) as
select count(*)
from gazillion_row_table;
select num_rows from my_counter_view;
보기는 단순한 데이터 모델 제공, 보안 제약 조건 구현, SQL 쿼리 재사용, SQL 단점 해결 등 다양한 용도로 사용할 수 있습니다.
구체화된 보기는 쿼리가 실행되고 결과가 실제 테이블로 저장된 보기입니다.실제 테이블과 마찬가지로 코드에서 구체화된 보기를 참조할 수 있습니다.실제로 인덱스를 작성하거나 제약 조건을 선언할 수 있는 실제 테이블입니다.구체화된 보기에 액세스할 때는 사전 계산된 결과에 액세스하는 것입니다.기본 쿼리를 실행하고 있지 않습니다.구체화된 보기를 최신 상태로 유지하는 방법에는 몇 가지 전략이 있습니다.모든 정보는 설명서에서 확인할 수 있습니다.
구체화된 보기는 쿼리에서 직접 참조되는 경우가 거의 없습니다.요점은 최적화 도구가 "쿼리 재작성" 메커니즘을 사용하여 위의 COUNT(*) 예제와 같은 쿼리를 사전 계산된 테이블의 쿼리에 내부적으로 다시 작성할 수 있도록 하는 것입니다.이것은 원래 코드를 변경할 필요가 없기 때문에 매우 강력합니다.
구체화된 뷰에는 여러 가지 용도가 있지만 대부분 성능상의 이유로 사용됩니다.다른 용도로는 복제, 복잡한 제약 조건 확인, 최적화 도구의 결함에 대한 해결 방법 등이 있습니다.
긴 버전: -> Oracle 설명서
보기는 하나 이상의 테이블에 대한 쿼리입니다.보기는 다른 테이블 또는 보기에서 선택하거나 다른 테이블 또는 보기와 결합하는 데 사용할 수 있습니다.메트릭 보기는 완전히 평가되고 행이 메모리 또는 디스크에 저장된 보기입니다.따라서 구체화된 보기에서 선택할 때마다 보기를 생성하는 쿼리를 수행할 필요가 없으며 결과가 즉시 반환됩니다.
예를 들어, 보기는 다음과 같은 쿼리일 수 있습니다.SELECT account, SUM(payment) FROM payments GROUP BY account
테이블에는 많은 수의 지불이 있지만 계좌 수는 많지 않습니다.이 보기를 사용할 때마다 전체 테이블을 읽어야 합니다.구체화된 보기를 사용하면 결과가 즉시 반환됩니다.
구체화된 뷰의 중요한 문제는 기본 데이터가 변경될 때 뷰를 업데이트하는 것입니다.이 예에서는 결제 테이블에 새 행이 추가될 때마다 계정을 나타내는 구체화된 보기의 행을 업데이트해야 합니다.이러한 업데이트는 동기적으로 또는 주기적으로 발생할 수 있습니다.
예. 구체화된 뷰는 아래에 기본 테이블이 있는 뷰입니다.사용자가 뷰를 정의하면 Oracle이 뷰 아래에 기본 테이블을 자동으로 생성합니다.
보기를 실행하고 결과 데이터를 기본 테이블에 배치하면 성능이 향상됩니다.
그것들은 다양한 이유로 유용합니다.구체화된 보기를 사용하는 이유에 대한 몇 가지 예는 다음과 같습니다.
복잡한 보기를 참조할 때 실행하는 데 시간이 오래 걸릴 수 있습니다.
복잡한 SQL에 포함된 보기로 인해 실행 계획이 잘못되어 성능 문제가 발생할 수 있습니다.
느린 DBLINK에서 데이터를 참조해야 할 수 있습니다.
구체화된 보기를 정기적으로 새로 고치도록 설정할 수 있습니다.
전체 새로 고침 또는 부분 새로 고침을 지정할 수 있습니다.
자세한 내용은 Oracle 설명서를 참조하십시오.
언급URL : https://stackoverflow.com/questions/4463354/what-are-materialized-views
'programing' 카테고리의 다른 글
모델을 검증하는 동안 케라스에서 자세한 내용은 무엇을 사용합니까? (0) | 2023.07.01 |
---|---|
SQL 또는 Toad를 사용하여 테이블 정의를 추출하는 방법 (0) | 2023.07.01 |
Python에서 내 모듈을 가져올 수 없음 (0) | 2023.07.01 |
Java로 MongoDB에서 문서의 대량 업데이트를 수행하는 방법은 무엇입니까? (0) | 2023.07.01 |
두 Git 커밋 간에 변경된 모든 파일의 목록을 가져오는 방법은 무엇입니까? (0) | 2023.07.01 |