物化视图


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