39.3. 구체화 된 견해#

토토 결과 된 뷰에서PostgreSQL보기와 마찬가지로 규칙 시스템을 사용하지만 결과를 테이블과 같은 형태로 유지하십시오. 다음의 주요 차이점 :

토토 결과 된 View MyMatView 생성 MyMatView를 선택 * From MyTab;

및 :

테이블 작성 MyMatView를 선택 *에서 mytab;

구체화 된 뷰는 후속으로 직접 업데이트 될 수 없으며, 구체화 된보기를 생성하는 데 사용되는 쿼리는 뷰의 쿼리가 저장되는 것과 동일한 방식으로 저장되므로 다음과 함께 구체화 된 뷰를 위해 신선한 데이터를 생성 할 수 있습니다.

새로 고침 토토 결과 된보기 mymatview;

postgresql시스템 카탈로그는 테이블이나보기와 정확히 동일합니다. 따라서 파서의 경우, 토토 결과 된보기는 테이블이나보기와 같은 관계입니다. 토토 결과 된보기가 쿼리에서 참조되면, 데이터는 표에서와 같이 토토 결과 된보기에서 직접 반환됩니다. 규칙은 토토 결과 된보기를 채우는 데만 사용됩니다.

구체화 된보기에 저장된 데이터에 대한 액세스가 종종 기본 테이블에 직접 또는 뷰를 통해 액세스하는 것보다 훨씬 빠르지 만, 데이터가 항상 최신 것은 아닙니다. 그러나 때로는 현재 데이터가 필요하지 않습니다. 판매를 기록하는 테이블을 고려하십시오 :

테이블 송장 생성 (
    invoice_no 정수 기본 키,
    Seller_no Integer, - 영업 사원의 ID
    invoice_date 날짜 - 판매 날짜
    invoice_amt 숫자 (13,2) - 판매량
);

사람들이 히스토리 판매 데이터를 빠르게 그래프로 그래프로 그래프로 만들 수 있기를 원한다면 요약하고 싶을 수도 있고 현재 날짜의 불완전한 데이터에 신경 쓰지 않을 수 있습니다..

토토 결과 된보기 생성 Sales_Summary as
  선택하다
      Seller_no,
      invoice_date,
      SALL (invoice_amt) :: 숫자 (13,2)로 sales_amt
    송장에서
    여기서 invoice_date <current_date
    그룹에 의해
      Seller_no,
      invoice_date;

고유 한 인덱스 판매 _summary_seller를 만듭니다
  on sales_summary (seller_no, invoice_date);

이 토토 결과 된보기는 영업 사원을 위해 생성 된 대시 보드에 그래프를 표시하는 데 유용 할 수 있습니다. 이 SQL 문을 사용하여 매일 밤 통계를 업데이트 할 예정이 될 수 있습니다.

새로 고침 토토 결과보기 Sales_Summary;

토토 결과 된보기의 또 다른 용도는 외국 데이터 래퍼를 통해 원격 시스템에서 가져온 데이터에 더 빠르게 액세스 할 수 있도록하는 것입니다. 사용한 간단한 예file_fdw는 아래에 있으며 타이밍이 아래에 있지만 로컬 시스템의 캐시를 사용하기 때문에 원격 시스템에 대한 액세스와 비교하여 성능 차이는 일반적으로 여기에 표시된 것보다 클 것입니다. 또한 우리는 또한 토토 결과 된 견해에 인덱스를 넣을 수있는 능력을 활용하고있는 반면file_fdw인덱스를 지원하지 않습니다. 이 장점은 다른 종류의 외국 데이터 액세스에 적용되지 않을 수 있습니다.

설정 :

Extension file_fdw 만들기;
Server local_file 이외의 데이터 래퍼 파일 _fdw를 만듭니다.
외국 테이블 단어 만들기 (단어 텍스트가 아님 null)
  Server local_file
  옵션 (filename '/usr/share/dict/words');
구체화 된보기 wrd를 선택하여 * Word에서 선택하십시오.
WRD (Word)에서 고유 한 인덱스 WRD_WORD를 만듭니다.
Extension PG_TRGM 작성;
GIST (Word Gist_trgm_ops)를 사용하여 WRD에서 색인 WRD_TRGM을 만듭니다.
진공 분석 WRD;

이제 단어를 철회합시다. 사용file_fdw직접 :

Word = 'caterpiler'에서 단어에서 count (*)를 선택하십시오.

 세다
-------
     0
(1 행)

with분석 설명, 우리는 다음을 본다 :

집계 (비용 = 21763.99....21764.00 행 = 1 너비 = 0) (실제 시간 = 188.180..188.181 행 = 1 루프 = 1)
   - 단어에 대한 외국 스캔 (비용 = 0.00..21761.41 행 = 1032 너비 = 0) (실제 시간 = 188.177..188.177 행 = 0 루프 = 1)
         필터 : (Word = 'CaterPiler':: 텍스트)
         필터에 의해 제거 된 행 : 479829
         외국 파일 :/usr/share/dict/words
         외국 파일 크기 : 4953699
 계획 시간 : 0.118ms
 실행 시간 : 188.273 MS

토토 결과 된보기가 대신 사용되면 쿼리가 훨씬 빠릅니다.

집계 (비용 = 4.44..4.45 행 = 1 너비 = 0) (실제 시간 = 0.042..0.042 행 = 1 루프 = 1)
   - index index on wrd에서 wrd_word를 사용하여 스캔합니다 (비용 = 0.42..4.44 행 = 1 너비 = 0) (실제 시간 = 0.039..0.039 행 = 0 루프 = 1)
         색인 조건 : (Word = 'CaterPiler':: Text)
         힙을 가져옵니다 : 0
 계획 시간 : 0.164 ms
 실행 시간 : 0.117 ms

어느 쪽이든, 단어가 잘못되었으므로 우리가 원했던 것을 찾아 봅시다. 다시 사용file_fdwandPG_TRGM:

Word Order에서 Word <- 'CaterPiler'Limit 10을 선택하십시오.

     단어
-----------------
 네 끗패
 무한 궤도
 무한 궤도
 애벌레
 애벌레
 애벌레
 케이터
 취사자
 수수료
 음식을 제공합니다
(10 줄)
한계 (비용 = 11583.61..11583.64 행 = 10 너비 = 32) (실제 시간 = 1431.591..1431.594 행 = 10 루프 = 1)
   - 정렬 (비용 = 11583.61..11804.76 행 = 88459 너비 = 32) (실제 시간 = 1431.589..1431.591 행 = 10 루프 = 1)
         정렬 키 : ((word <- 'Caterpiler':: Text)))
         정렬 방법 : Top-N Heapsort 메모리 : 25KB
         - 단어에 대한 외국 스캔 (비용 = 0.00..9672.05 줄 = 88459 너비 = 32) (실제 시간 = 0.057..1286.455 줄 = 479829 루프 = 1)
               외국 파일 :/usr/share/dict/words
               외국 파일 크기 : 4953699
 계획 시간 : 0.128ms
 실행 시간 : 1431.679 MS

토토 결과 된보기 사용 :

한계 (비용 = 0.29..1.06 행 = 10 너비 = 10) (실제 시간 = 187.222..188.257 행 = 10 루프 = 1)
   - WRD에서 WRD_TRGM을 사용한 색인 스캔 (비용 = 0.29..37020.87 행 = 479829 너비 = 10) (실제 시간 = 187.219..188.252 행 = 10 루프 = 1)
         주문 : (Word <-- 'Caterpiler':: 텍스트)
 계획 시간 : 0.196ms
 실행 시간 : 198.640 ms

로컬 데이터베이스에 대한 원격 데이터의 정기적 인 업데이트를 견딜 수 있다면 성능 혜택이 상당 할 수 있습니다.

정정 제출

문서에 올바른 것이없는 것이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면