物化視圖


1.物化視圖和普通的視圖區別,優勢?
物化視圖的優缺點

優點:
1,物化視圖的最大的優勢是可以提高性能:Oracle的物化視圖提供了強大的功能,可以用於預先計算並保存表連接或聚集等耗時較多的操作的結果,這樣,在執行查詢時,就可以避免進行這些耗時的操作,而從快速的得到結果。
2, 物化視圖有很多方面和索引很相似
3,通過預先計算好答案存儲起來,可以大大地減少機器的負載
A,更少的物理讀--掃描更少的數據
B,更少的寫--不用經常排序和聚集
C。減少CPU的消耗--不用對數據進行聚集計算和函數調用
D,顯著地加快響應時間--在使用物化視圖查詢數據時(與主表相反),將會很快的返回查詢結果

缺點:
1,物化視圖用於只讀或者“精讀”環境下工作最好 ,不用於聯機事務處理系統(OLTP)環境,在事實表等更新時會導致物化視圖行鎖,從而影響系統並發性。
2,物化視圖有出現無法快速刷新,導致查詢數據不准確的現象
3,Rowid物化視圖(創建的物化視圖通常情況下有主鍵,rowid,和子查詢視圖)只有一個單一的主表,不能包括下面任何一項:
A,Distinct 或者聚合函數.
B,Group by,子查詢,連接和SET操作
4,物化視圖會增加對磁盤資源的需求,即需要永久分配的硬盤空間給物化視圖來存儲數據
5,物化視圖的工作原理受一些可能的約束,比如主鍵,外鍵等。


2.物化視圖的刷新方式(COMPLETE、FAST和FORCE)
BEGIN
DBMS_MVIEW.REFRESH ( list => 'MV_TABLE2', Method =>'COMPLETE', refresh_after_errors => True);
end;

BEGIN
DBMS_MVIEW.REFRESH ( list => 'MV_TABLE2', Method =>'FAST', refresh_after_errors => True);
end;

BEGIN
DBMS_MVIEW.REFRESH ( list => 'MV_TABLE2', Method =>'FORCE', refresh_after_errors => True);
end;


3.物化視圖的刷新和編譯的區別
刷新如上
編譯:ALTER MATERIALIZED VIEW MV_TABLE2 COMPILE;
刷新是視圖數據的變化,編譯是視圖定義的變化。

4.基於物化視圖創建約束的子表,刷新視圖,對外鍵無索引的子表影響?對有索引的影響。
物化視圖默認是使用基表的主鍵;如果基表沒有主鍵,物化視圖也沒有主鍵,可以手動添加。
這個不是快速刷新的,會采用全量刷新的方式,而快速刷新必須依賴主鍵。

當引用物化視圖為外鍵的時候,刷新會產生TM鎖,並且當子表有dml時,視圖刷新會失敗,提示約束完整性沖突。
alter table dbamonitor.table1 add constraint table1_pk primary key(id);
ALTER TABLE TABLE4 ADD CONSTRAINT FK_ID1 FOREIGN KEY(id) REFERENCES MV_TABLE1(ID);

ERROR at line 1:
ORA-12008: error in materialized view refresh path
ORA-02292: integrity constraint (DBAMONITOR.FK_ID) violated - child record found
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2809
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 3025
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2994
ORA-06512: at line 2

參考:
https://www.cnblogs.com/name-hanlin/p/4931500.html
https://blog.csdn.net/tamink2013/article/details/84820945

相關視圖:
DBA_MVIEWS和DBA_MVIEW_REFRESH_TIMES

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM