oracle 物化視圖(轉)

物化視圖對於前臺數據庫使 用者來說如同一個實際的表,具有和表相通的一般select操作,而其實際上是一個視圖,一個定期刷新數據的視圖(具體刷新時間在定義物化視圖的時候已有 定義),使用物化視圖可以實現視圖的所有功能,而物化視圖確不是在使用時纔讀取,大大提高了讀取速度,特別適用抽取大數據量表某些信息以及數據鏈連接表使 用.具體語法如下:
CREATE MATERIALIZED VIEW an_user_base_file_no_charge
             REFRESH COMPLETE START WITH SYSDATE 
            NEXT  TRUNC(SYSDATE+29)+5.5/24
   as
select distinct user_no
  from cw_arrearage t
 where (t.mon = dbms_tianjin.getLastMonth or
       t.mon = add_months(dbms_tianjin.getLastMonth, -1))
drop materialized view an_user_base_file_no_charge;
 

第 13 章 物化視圖
  8.1.5企業版/個人版開始支持
  需要權限:GRANT CREATE MATERIALIZED VIEW,還必須直接賦予GRANT QUERY REWRITE.爲實現查詢重寫,必須使用CBO.
  13.1 物化視圖如何工作
  設置
  COMPATIBLE參數必須高於8.1.0
QUERY_REWRITE_ENABLED = TRUE
QUERY_REWRITE_INTEGRETY =
  ENFORCED - 查詢僅用Oracle強制與保證的約束、規則重寫;
  TRUSTED – 查詢除用Oracle強制與保證的約束、規則,也可用用戶設定的數據間的任何關係來重寫;
  STALE_TOLERATED – 即便Oracle知道物化視圖中數據過期(與事實表等不同步),也重寫查詢。
  創建物化視圖的用戶必須具有直接賦予的GRANT QUERY REWRITE權限,不能通過角色繼承。
  內部機制
  全文匹配
  部分匹配:從FROM子句開始,優化器比較之後的文本,然後比較SELECT列表
  一般重寫方法:
  數據充分
  關聯兼容
  分組兼容
  聚集兼容
  13.2 確保使用物化視圖
  約束
   考慮到現實環境的數據量,可以將主鍵、外鍵、非空等約束置爲NOVALIDATE,並調整QUERY_REWRITE_INTEGRITY爲 TRUSTED,這樣可以達到“欺騙”數據庫的目的,但必須注意如果無法保證此類約束的真實有效,查詢改寫後可能造成結果不精確。
  維度
  實際就是指明已存在的表中各列的歸併關係,從而關聯事實表後形成的物化視圖可用於向“上”歸併(相當於用表中代表更高歸併關係的列關聯事實表)。標準語法:
CREATE DIMENSION time_hierarchy_dim
  LEVEL day      IS time_hierarchy.day
  LEVEL mmyyyy   IS time_hierarchy.mmyyyy
  LEVEL yyyy     IS time_hierarchy.yyyy
HIERARCHY time_rollup
(day CHILD OF mmyyyy CHILD OF yyyy)
ATTRIBUTE mmyyyy
DETERMINES mon_yyyy;
  13.3 DBMS_OLAP
  估計(物化視圖)大小
  DBMS_OLAP.ESTIMATE_SUMMARY_SIZE(視圖名, 視圖定義, 估計行數, 估計字節數);
  其中後兩個參數爲NUMBER型輸出參數。
  維度有效性檢查
  DBMS_OLAP.VALIDATE_DIMENSION(視圖名, 用戶名, FALSE, FALSE);
  SELECT * FROM 維度表名
  WHERE ROWIN IN (SEELCT bad_rowid FROM MVIEW$_EXCEPTION);
  所選出行即爲不符合維度定義的行。
  推薦物化視圖
  首先必須添加合適的外鍵,包通過外鍵來判定表之間的關係而不是維度。
  DBMS_OLAP.RECOMMEND_MV(事實表名, 1000000000, ‘’);
  第二個參數表示物化視圖可用的空間大小,可傳入一個較大的數。第三個參數傳入需要保留的特定物化視圖,傳入空即爲不考慮其他物化視圖。
執行C:/oracle/RDBMS/demo/sadvdemo後執行:
  DEMO_SUMADV.PRETTYPRINT_RECOMMENDATIONS
  13.4 最後說明
  物化視圖不爲OLTP系統設計
  在事實表等更新時會導致物化視圖行鎖,從而影響系統併發性。
發佈了56 篇原創文章 · 獲贊 19 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章