ITPUB知识索引贴——物化视图
http://www.itpub.net/viewthread.php?tid=1308625&highlight=%CE%EF%BB%AF%CA%D3%CD%BC
物化视图(Materialized View)在9i以前的版本叫做快照(SNAPSHOT),从9i开始改名叫做物化视图。其实无论是快照还是物化视图,都能体现出这个对象的特点。
物化视图中的数据来自于基表某个时刻(物化视图的创建时刻,或刷新时刻),因此可以认为是基表都个时刻的快照。
物化视图和视图类似,反应的是某个查询的结果,但是和视图仅保存SQL定义不同,物化视图本身会存储数据,因此是物化了的视图。
根据使用功能来分,物化视图可以分为用于数据复制的,或用于预计算查询重新的两个方面。
物化视图本身有具有很多特性,根据创建方式、刷新方式、是否可更新、是否支持查询重新等可以将物化视图进行进一步的细分。
------
用于数据复制的物化视图
物化视图的一个主要功能就是用于数据的复制,Oracle推出的高级复制功能分为两个部分,多主复制和
物化视图复制。
而
物化视图复制就是利用了
物化视图的功能。
物化视图复制包含只读
物化视图复制、可更新
物化视图复制和可写
物化视图复制。
只读
物化视图复制建立的是源数据库的只读环境。可更新
物化视图复制建立基于
物化视图双向复制环境。
可写
物化视图复制在
物化视图建立的时候使用了FOR UPDATE,但是没有像可更新
物化视图那样添加到
物化视图组中,因此本地
物化视图可以修改,但是修改无法发送到源数据库中,因为修改在
物化视图刷新后会丢失,这种类型的
物化视图复制很少使用。
只读
物化视图环境复制创建的例子:
http://www.itpub.net/thread-204968-1-1.htmlhttp://www.itpub.net/viewthread.php?tid=234279可更新
物化视图环境创建的例子:
暂缺
可更新
物化视图环境的冲突解决方案设置:
暂缺
------------------------------
物化视图复制环境的维护
用于预计算的物化视图
这种类型的
物化视图一般用于数据仓库系统。
主要用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。这种物化视图还经常使用查询重写(query rewrite)机制,这样不需要修改原有的查询语句,Oracle会自动选择合适的物化视图进行查询,完全对应用透明。
这种物化视图可以分为以下三种类型:包含聚集的物化视图;只包含连接的物化视图;嵌套物化视图。三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大。
创建物化视图时可以指定多种选项:
创建方式(Build Methods):包括BUILD IMMEDIATE和BUILD DEFERRED两种。BUILD IMMEDIATE是在创建物化视图的时候就生成数据,而BUILD DEFERRED则在创建时不生成数据,以后根据需要在生成数据。默认为BUILD IMMEDIATE。
查询重写(Query Rewrite):包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的物化视图是否支持查询重写。查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据。默认为DISABLE QUERY REWRITE。
刷新(Refresh):指当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步。刷新的模式有两种:ON DEMAND和ON COMMIT。ON DEMAND指物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新。ON COMMIT指出物化视图在对基表的DML操作提交的同时进行刷新。刷新的方法有四种:FAST、COMPLETE、FORCE和NEVER。FAST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。COMPLETE刷新对整个物化视图进行完全的刷新。如果选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。NEVER指物化视图不进行任何刷新。默认值是FORCE ON DEMAND。
可以指明ON PREBUILD TABLE语句将物化视图建立在一个已经存在的表上。这种情况下,物化视图和表必须同名。当删除物化视图时,不会删除同名的表。这种物化视图的查询重写要求参数QUERY_REWRITE_INTEGERITY必须设置为trusted或者stale_tolerated。
物化视图可以进行分区。而且基于分区的物化视图可以支持分区变化跟踪(PCT)。具有这种特性的物化视图,当基表进行了分区维护操作后,仍然可以进行快速刷新操作。基于预计算物化视图特点的简单描述:http://yangtingkun.itpub.net/post/468/11356-----------------------------
物化视图的特点
化视图深入研究
物化视图功能灵活运用
物化视图有关的问题和BUG
关于索引贴
ITPUB有一个意向,打算针对当前的论坛和博客建立其自己的知识库系统,需要建立针对一些主题建立索引贴的机制。
受ITPUB只托,建立一个索引表的初始模板,方便讨论和确定这个索引表的最终方案。
但是论坛上帖子有几百万,论坛上会员的博客更是不计其数,如何找到合适的帖子本身就是一个很复杂的问题。
因此只好选择了一个自己还算熟悉的主题搞了一个索引贴,在整个论坛和相关博客中寻找合适的帖子和文章的工作量实在太大了,因此索引贴中的内容也主要出自我自己的BLOG,并兼顾了论坛的精华贴。举闲不避亲,毕竟我对物化视图方面的内容还算有点信心。不过就算如此,还是有一些方面的内容没有合适的文章加入,另外某些主题的文章很比较少,或者深度不够。
这个索引贴暂时只是个原型,至于以后如何修改。还需要ITPUB的管理任意进一步讨论,因此这个帖子暂时置于关闭状态。等到最终意见确定后,再打开回复功能。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9460258/viewspace-671983/
,如需转载,请注明出处,否则将追究法律责任。