MV (Materialed View) 物化檢視的重新整理組
什麼是重新整理組
通常我們建立的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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 建立物化檢視MV ( Materialized View )ZedView
- 建立Materialed View (物化檢視)時候報錯ORA-01723View
- Oracle物化檢視3 - Prebuilt MVOracleUI
- 物化檢視(Materialized View)的重新整理回滾約束ZedView
- 物化檢視(Materialized View)的重新整理回滾測試ZedView
- materialized view (物化檢視)ZedView
- 【MV】物化檢視查詢重寫
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- 【MV】group by查詢子句是否包含count(*)對物化檢視重新整理的影響
- 物化檢視的快速重新整理測試與物化檢視日誌
- 【MV】實現跨庫可更新物化檢視
- 12c 物化檢視 - 理解完全重新整理的物化檢視工作原理
- oracle 物化檢視重新整理方法Oracle
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- 轉:物化檢視(Materialized View)介紹ZedView
- 物化檢視重新整理並非完全根據物化檢視日誌記錄
- oracle 物化檢視的自動重新整理方法Oracle
- 物化檢視重新整理的問題及分析
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(三)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(二)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(一)
- 物化檢視日誌與增量重新整理
- StarRocks 物化檢視重新整理流程及原理
- oracle10g materialized view物化檢視示例OracleZedView
- ogg 同步 物化檢視建立限制 Materialized ViewZedView
- 【ORACLE】物化檢視快速重新整理限制條件Oracle
- Oracle 物化檢視 快速重新整理 限制 說明Oracle
- 12c 物化檢視 - 對快速重新整理的理解
- Oracle 物化檢視快速重新整理對效能的影響Oracle
- 包含複雜查詢的快速重新整理的物化檢視
- hg_job配置定時重新整理物化檢視
- 物化檢視妙用__表同步使用物化檢視方法
- 【物化檢視】幾種物化檢視日誌分析
- Postgres使用trigger自動重新整理物化檢視
- Oracle 物化檢視1 - 單表聚合及其快速重新整理Oracle
- 物化檢視comlete重新整理會產生大量的日誌
- ZT 定位導致物化檢視無法快速重新整理的原因
- oracle10g nested materialized view巢狀物化檢視示例OracleZedView巢狀