Oracle物化視圖的用法與總結

來源:互聯網
上載者:User

Oracle物化視圖的用法與總結

物化視圖(material view)是什嗎?

物化視圖是包括一個查詢結果的資料庫物件,它是遠端資料的的本機複本,或者用來產生基於資料表求和的匯總表。

物化視圖儲存基於遠端資料表的資料,也可以稱為快照(類似於MSSQL Server中的snapshot,靜態快照)。對於複製,物化視圖允許你在本地維護遠端資料的副本,這些副本是唯讀。

如果你想修改本機複本,必須用進階複製的功能。當你想從一個表或視圖中抽取資料時,你可以用從物化視圖中抽取。

對於資料倉儲,建立的物化視圖通常情況下是彙總檢視,單一表彙總檢視和串連視圖。(這個是基於本地的基表或者視圖的彙總)。

物化視圖,說白了,就是物理表,只不過這張表通過Oracle的內部機制可以定期更新,將一些大的耗時的表串連用物化視圖實現,會提高查詢的效率。當然要開啟查詢重寫選項;

Material View的主要作用

1. 實現兩個資料庫之間的資料同步,可以存在時間差。

2. 如果是遠程連結資料庫的情境時,提高查詢速度。

(由於查詢邏輯複雜,資料量比較大,導致每次查詢檢視的時候,查詢速度慢,效率低下)

 

物化視圖的重新整理方式和方法

1. 重新整理的方式

Fast

Complete

Fource

2. 重新整理的方法

DBMS_REFRESH.Refresh

DBMS_MVIEW.Refresh

EXEC DBMS_MVIEW.refresh('BXJ_OBJECTS_MV_T1','C');EXEC DBMS_REFRESH.refresh('REP_MVIEWGROUP');

物化視圖的重新整理方式和方法
 (1).在來源資料庫建立mview log記錄檔

        create materialized view log on w_1 ;

----註:(TEST為表名或者視圖名,關於視圖上建立物化視圖,見基於視圖的物化視圖

----建立物化視圖語句:

    (2).在統計資料建立materializad view  文法    

Create materialized view MV_TEST

----MVTEST為物化視圖名

Build immediate

----建立時產生資料對應的是build deferred

Refresh fast

----增量重新整理

On commit

----在基表有更新時提交,這裡該句對視圖無效

With rowid

----這裡建立基於rowid的物化視圖,對應的是 primary key

As

Select * from TEST;

----產生物化視圖資料語句

或者

    CREATE MATERIALIZED VIEW MV_TableName        BUILD IMMEDIATE      --建立時立即重新整理         REFRESH FORCE        --如果可以快速重新整理則進行快速重新整理,否則完全重新整理         ON DEMAND            --重新整理方式         START WITH SYSDATE   --第一次重新整理時間         NEXT  SYSDATE+1/12   --重新整理時間間隔         AS SELECT 1 id ‘A’ name FROM dual;

    (3).調用時進行重新整理

        dbms_refresh.refresh('W_1')

建立物化視圖
CREATE MATERIALIZED VIEW bxj_objects_mv_t1 REFRESH FAST AS SELECT * FROM apps.bxj_objects_t1;CREATE MATERIALIZED VIEW bxj_objects_mv_t2 REFRESH FORCE AS SELECT * FROM bxj_objects_t2;CREATE MATERIALIZED VIEW bxj_objects_mv_t3 REFRESH COMPLETE AS SELECT * FROM bxj_objects_t3;


ON DEMAND和ON COMMIT物化視圖的區別
ON DEMAND和ON COMMIT物化視圖的區別在於其重新整理方法的不同,
ON DEMAND顧名思義,僅在該物化視圖“需要”被重新整理了,才進行重新整理(REFRESH),即更新物化視圖,以保證和基表資料的一致性;
而ON COMMIT是說,一旦基表有了COMMIT,即事務提交,則立刻重新整理,立刻更新物化視圖,使得資料和基表一致。

物化視圖是物理表的嗎?
1) 物化視圖在某種意義上說就是一個物理表(但並不僅僅是一個物理表),這通過其可以被user_tables查詢出來,而得到佐證;
2) 物化視圖也是一種段(segment),所以其有自己的實體儲存體屬性;
3) 物化視圖會佔用資料庫磁碟空間,這點從user_segment的查詢結果,可以得到佐證。

查詢物化視圖上次重新整理時間

SELECT last_refresh_date      FROM user_mviews     WHERE mview_name = 'MV_TABLENAME';

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.