MV (Materialed View) 物化檢視的重新整理組

tolywang發表於2010-08-25

什麼是重新整理組
通常我們建立的MView會不止一個,而且各個MView的Master Table之間是
有約束,資料一致性關聯的,如果我們對各個MView分開重新整理的話我們是不
能保證關聯資料的完整性和事務的一致性的。Oracle提供了重新整理組來解決這
個問題。在重新整理組重新整理之後Oracle可以保證在重新整理組裡面的所有的表在重新整理
的那個時間點的是一致的。


重新整理組的大小
Oracle專門針對大的MView重新整理組做了最佳化,也就是說對於相同數量的MView
來說一個大的重新整理組要多個小的重新整理組重新整理的要快,即重新整理的一個含有100
個MView的重新整理組要比重新整理5個各含有20個MView的重新整理組要快。

但是速度不是唯一的需要注意的問題,再決定一個重新整理組大小的時候我們還
需要考慮下面的這些問題:

資料的一致性
就像我們上面所說的,資料的完整性和事物的一致性是我們最需要考慮的
問題,考慮大小之前先保證一致性。

表鎖
再重新整理組的重新整理期間,所有的在組裡面的表會被鎖住而不讓別的程式進行
更新的操作,因為表的更新會破壞資料的一致性。這樣就造成重新整理組越大,
表被鎖的時間也就越長。因此針對這個來說越小的重新整理組是越有利的。

網路的穩定性
如果在一個重新整理組重新整理完成之前網路終端的話將會導致整個組的重新整理回滾,
因此在網路不好的時候越大的重新整理組是越不利的,我們需要根據網路的狀況
來調整我們的重新整理組的大小。


大重新整理組的優點:
1. 相比較多個小的重新整理組來說大的重新整理組重新整理速度要更快些
2. 一次重新整理命令就能夠把組裡面的MView全部重新整理

小重新整理組的優點:
1. MView被鎖住的時間要短些
2. 網路條件不好的時候可能會導致整個組重新整理的回滾,浪費時間


建立MV LOG及物化檢視參考: http://space.itpub.net/35489/viewspace-665370

 

重新整理組的基本操作
說完了重新整理組的概念之後,接下來我們來進行下實際的演練。Oracle使用
DBMS_REFRESH包來進行重新整理組的建立和管理操作,下面我們一個個說明下。

建立重新整理組

下面為我們前面建立的MView建立一個名為SFIS1.MV_REFRESH_GROUP的
重新整理組,這個重新整理組將每2分鐘做一次重新整理。

-- 我們先來建立一個重新整理組

begin DBMS_REFRESH.MAKE(
    name => 'SFIS1.MV_REFRESH_GROUP',   
    list => '',     
    next_date => SYSDATE,   
    interval => 'SYSDATE+(2/(24*60))'  
    );
end;
/

 

接下來要介紹的是DBMS_REFRESH.ADD方法, 下面我們將前面建立的
MView MVT加入到重新整理組裡面:

begin DBMS_REFRESH.ADD(
   name => 'MV_REFRESH_GROUP',
   list => 'SFIS1.AAA_MV2'
   );
end;
/


相關檢視: dba_refresh , dba_refresh_children , dba_jobs

可以呼叫DBMS_REFRESH.REFRESH對整個組進行手工的重新整理操作。


維護重新整理組
下面說下DBMS_REFRESH的另外三個方法,分別是CHANGE, SUBTRACT和DESTROY。

CHANGE Procedure
改變重新整理組的重新整理頻率。
DESTROY Procedure
刪除重新整理組裡面所有的MView並將重新整理組刪除。
SUBTRACT Procedure
從重新整理組裡面刪除指定的MView。
用法也是很簡單,就演示下它們的用法:


-- 改變 interval
begin DBMS_REFRESH.CHANGE(
    name => 'MV_REFRESH_GROUP',
    next_date => sysdate,
    interval => 'SYSDATE+(5/(24*60))'
    );
end;
/

-- 把我們剛剛建立的TEST_GROUP刪除掉, 當然這時我們的job也已經消失了
SQL> exec dbms_refresh.destroy('SFIS1.MV_REFRESH_GROUP'); 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-671809/,如需轉載,請註明出處,否則將追究法律責任。

相關文章