1. 程式人生 > 實用技巧 >Oracle——物化檢視筆記

Oracle——物化檢視筆記

版權宣告:本文為CSDN博主「richieruan」的原創文章。
原文連結:https://blog.csdn.net/richieruan/article/details/44454033

基本定義

  物化檢視是包括一個查詢結果的資料庫物件,它是遠端資料的的本地副本,或者用來生成基於資料表求和的彙總表。物化檢視儲存基於遠端表的資料,也可以稱為快照。對於複製,物化檢視允許你在本地維護遠端資料的副本,這些副本是隻讀的。如果你想修改本地副本,必須用高階複製的功能。當你想從一個表或檢視中抽取資料時,你可以用從物化檢視中抽取。對於資料倉庫,建立的物化檢視通常情況下是聚合檢視,單一表聚合檢視和連線檢視。物化檢視可以查詢表,檢視和其它的物化檢視。

物化檢視與其他概念的區別

  物化檢視與普通表---兩者都可以在user_objects查詢到相關物件,但普通表一般儲存原始資料即第一手生成資料、不依賴其他表,而物化檢視的結果集多是複雜的多表連線查詢結果,而且某些情況下,而原始表的的更新可以根據需要及時在物化檢視上體現出來,普通表則不具備這種功能。

物化檢視與普通檢視的區別

  普通檢視並不在user_objects產生相應物件,只在資料庫中建立查詢定義且不具備降低資源消耗的功能,每次查詢檢視都要重新執行檢視的定義,多數用於為遠端登入使用者提供資料只讀查詢的轉換。

建立物化檢視

語法:

create materialized view [
view_name] refresh [fast|complete|force] [ on [commit|demand] | start with (start_time) next (next_time) ] as {建立物化檢視用的查詢語句}

語法解釋:

1.refresh [fast|complete|force] 檢視重新整理的方式:

  • fast: 增量重新整理.假設前一次重新整理的時間為t1,那麼使用fast模式重新整理物化檢視時,只向檢視中新增t1到當前時間段內,主表變化過的資料.為了記錄這種變化,建立增量重新整理物化檢視還需要一個物化檢視日誌表。create materialized view log on (主表名)。
  • complete:全部重新整理。相當於重新執行一次建立檢視的查詢語句。
  • force: 這是預設的資料重新整理方式。當可以使用fast模式時,資料重新整理將採用fast方式;否則使用complete方式。

2.資料重新整理的時間:

  • on demand:在使用者需要重新整理的時候重新整理,這裡就要求使用者自己動手去重新整理資料了(也可以使用job定時重新整理)
  • on commit:當主表中有資料提交的時候,立即重新整理MV中的資料;

3.start ……:從指定的時間開始,每隔一段時間(由next指定)就重新整理一次;

刪除物化檢視

drop materialized view an_user_base_file_no_charge;

手動重新整理物化檢視

begin
 dbms_mview.refresh(TAB=>'an_user_base_file_no_charge',
METHOD=>'COMPLETE',
PARALLELISM=>8); --PARALLELISM並行控制引數
end;
/