在Oracle中,基於查詢執行或結果集更新存儲過程物化視圖的計算成本是多少?更具體地說,Oracle是否以這種方式存儲查詢的結果,這對刷新視圖所需的時間有重大貢獻?Oracle物化視圖計算成本
當然,執行時間很長的查詢以及令人難以置信的大或小結果集使這無法回答無處不在。
問題是關於視圖如何實際存儲結果集(在內存中,在磁盤上),所以我可以考慮重建物化視圖的頻率。
在Oracle中,基於查詢執行或結果集更新存儲過程物化視圖的計算成本是多少?更具體地說,Oracle是否以這種方式存儲查詢的結果,這對刷新視圖所需的時間有重大貢獻?Oracle物化視圖計算成本
當然,執行時間很長的查詢以及令人難以置信的大或小結果集使這無法回答無處不在。
問題是關於視圖如何實際存儲結果集(在內存中,在磁盤上),所以我可以考慮重建物化視圖的頻率。
有兩種類型mviews
完全刷新MVIEW的 - 的entier MVIEW將是重建每次刷新。類似於刪除和插入(注意:如果您指定atomic = F或具有版本< 9,它將被truncate/insert append)。
快速刷新mview - oracle將創建一個表來存儲增量更改。刷新時,副表中存儲的更改將應用於mview。
快速刷新在刷新時速度更快,但會降低基表上的dml操作速度。
當您考慮刷新策略時,應考慮對基表應用了多少更改以及需要多長時間刷新一次mview。
所以@haki,如果我每天刷新一次物化視圖,那麼更全面的刷新會更值得建議? – 2016-03-22 01:00:51
物化視圖基本上是一個表與一個算法結合來更新它。
01:37:23 [email protected]> create materialized view mv_dual as select dummy from dual;
Materialized view created.
Elapsed: 00:00:00.52
01:37:56 [email protected]> select object_name, object_type from user_objects where object_name = 'MV_DUAL';
OBJECT_NAME OBJECT_TYPE
--------------- -------------------
MV_DUAL TABLE
MV_DUAL MATERIALIZED VIEW
Elapsed: 00:00:00.01
您還可以在預建表上創建物化視圖。
如果我們談論刷新 - 有兩種選擇:快速刷新和完全刷新。
完整刷新只是重新執行MV查詢,而快速刷新執行增量更新。
http://docs.oracle.com/cd/E16338_01/server.112/e10706/repmview.htm#i29858
你是什麼意思,重建存儲過程? – 2013-04-25 17:24:38
@beherenow對不起,我的意思是'物化視圖',但我想大腦存儲過程。我已經重寫了這個問題,謝謝!雖然我仍然不確定'刷新'或'重建'是否正確。 – 2013-04-25 17:31:22