本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          隨筆-230  評論-230  文章-8  trackbacks-0
          oracle物化視圖
                                                
          物化視圖對于前臺數(shù)據(jù)庫使用者來說如同一個實際的表,具有和一般表相通的如select等操作,而其實際上是一個視圖,一個由系統(tǒng)實現(xiàn)定期刷新其數(shù)據(jù)的視圖(具體刷新時間在定義物化視圖的時候已有定義),使用物化視圖更可以實現(xiàn)視圖的所有功能,而物化視圖確不是在使用時才讀取,大大提高了讀取速度,特別適用抽取大數(shù)據(jù)量表某些信息以及數(shù)據(jù)鏈連接表使用.具體語法如下:
           
          物化視圖對于前臺數(shù)據(jù)庫使用者來說如同一個實際的表,具有和表相通的一般select操作,而其實際上是一個視圖,一個定期刷新數(shù)據(jù)的視圖(具體刷新時間在定義物化視圖的時候已有定義),使用物化視圖可以實現(xiàn)視圖的所有功能,而物化視圖確不是在使用時才讀取,大大提高了讀取速度,特別適用抽取大數(shù)據(jù)量表某些信息以及數(shù)據(jù)鏈連接表使用.具體語法如下:
          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企業(yè)版/個人版開始支持
            需要權(quán)限:GRANT CREATE MATERIALIZED VIEW,還必須直接賦予GRANT QUERY REWRITE.為實現(xiàn)查詢重寫,必須使用CBO.
            13.1 物化視圖如何工作
            設(shè)置
            COMPATIBLE參數(shù)必須高于8.1.0
          QUERY_REWRITE_ENABLED = TRUE
          QUERY_REWRITE_INTEGRETY =
            ENFORCED - 查詢僅用Oracle強制與保證的約束、規(guī)則重寫;
            TRUSTED – 查詢除用Oracle強制與保證的約束、規(guī)則,也可用用戶設(shè)定的數(shù)據(jù)間的任何關(guān)系來重寫;
            STALE_TOLERATED – 即便Oracle知道物化視圖中數(shù)據(jù)過期(與事實表等不同步),也重寫查詢。
            創(chuàng)建物化視圖的用戶必須具有直接賦予的GRANT QUERY REWRITE權(quán)限,不能通過角色繼承。
            內(nèi)部機制
            全文匹配
            部分匹配:從FROM子句開始,優(yōu)化器比較之后的文本,然后比較SELECT列表
            一般重寫方法:
            數(shù)據(jù)充分
            關(guān)聯(lián)兼容
            分組兼容
            聚集兼容
            13.2 確保使用物化視圖
            約束
            考慮到現(xiàn)實環(huán)境的數(shù)據(jù)量,可以將主鍵、外鍵、非空等約束置為NOVALIDATE,并調(diào)整QUERY_REWRITE_INTEGRITY為TRUSTED,這樣可以達(dá)到“欺騙”數(shù)據(jù)庫的目的,但必須注意如果無法保證此類約束的真實有效,查詢改寫后可能造成結(jié)果不精確。
            維度
            實際就是指明已存在的表中各列的歸并關(guān)系,從而關(guān)聯(lián)事實表后形成的物化視圖可用于向“上”歸并(相當(dāng)于用表中代表更高歸并關(guān)系的列關(guān)聯(lián)事實表)。標(biāo)準(zhǔn)語法:
          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(視圖名, 視圖定義, 估計行數(shù), 估計字節(jié)數(shù));
            其中后兩個參數(shù)為NUMBER型輸出參數(shù)。
            維度有效性檢查
            DBMS_OLAP.VALIDATE_DIMENSION(視圖名, 用戶名, FALSE, FALSE);
            SELECT * FROM 維度表名
            WHERE ROWIN IN (SEELCT bad_rowid FROM MVIEW$_EXCEPTION);
            所選出行即為不符合維度定義的行。
            推薦物化視圖
            首先必須添加合適的外鍵,包通過外鍵來判定表之間的關(guān)系而不是維度。
            DBMS_OLAP.RECOMMEND_MV(事實表名, 1000000000, ‘’);
            第二個參數(shù)表示物化視圖可用的空間大小,可傳入一個較大的數(shù)。第三個參數(shù)傳入需要保留的特定物化視圖,傳入空即為不考慮其他物化視圖。
          執(zhí)行C:\oracle\RDBMS\demo\sadvdemo后執(zhí)行:
            DEMO_SUMADV.PRETTYPRINT_RECOMMENDATIONS
            13.4 最后說明
            物化視圖不為OLTP系統(tǒng)設(shè)計
            在事實表等更新時會導(dǎo)致物化視圖行鎖,從而影響系統(tǒng)并發(fā)性。
           
           
           
          posted on 2008-05-21 17:31 有貓相伴的日子 閱讀(4504) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          主站蜘蛛池模板: 敖汉旗| 都兰县| 赞皇县| 保山市| 通海县| 公主岭市| 白城市| 宜君县| 杭州市| 山东省| 冀州市| 文安县| 湖州市| 嘉善县| 宜昌市| 巩义市| 常熟市| 永吉县| 靖州| 临夏市| 广东省| 丰城市| 开鲁县| 武胜县| 田阳县| 肥乡县| 台中市| 芦溪县| 天柱县| 凤城市| 桂阳县| 叶城县| 哈尔滨市| 德昌县| 清河县| 明光市| 汝州市| 湘潭县| 富顺县| 皋兰县| 积石山|