Oracle数据库关于物化视图的考虑

昨天代码提交后,今天没什么任务,
我虽看下代码是否出遗漏,有什么问题之地方,看在圈正在就观望之前写数据库对应dto时遇到的题目。

店铺数据库表里发现表A含有表B和表C中有关的几乎单字段。按照数据库设计规范来说,表A中只要起表B的大都独字段,这样是拂第三范式的,这样会加数据库内存的吃,尤其是设数据量很充分,内存影响还是会设有的。

自家既于德国有局见习的下,leader告诉我,虽然使恪守数据库设计规范,但是发生几情况下,却是不得不打破这些范式,比如要为此空间来换时间之早晚。

献身空间来更换时间,这个当开算法的上常常会就此到,只要牺牲空间在客观之限量下,争取到大方之岁月来抵消,还是算的及科学的优化的。

 

说到信用社的数据库有几乎张表的规划,就上述提到的很题目,我失去查看了平等围,问了平圈,(因为马上本是足以据此视图来解决的题目),发现一般的视图其实跟建立几张表的连天关系语句去查询是主导雷同的岁月消耗。

 

新生问到发物化视图这无异存在,oracle本身也是支持物化视图的,那什么是物化视图呢?物化视图的长和短处又出啊啊?

 

MView中文名称为物化视图(Materialized
View),相对于一般视图来说,MView的不同之处在于MView的结果碰头保留于一个常见的数额表中,在针对MView进行查询的时节不再会指向创建
MView的基表进行查询,而是直接查询MView对应之结果表明,然后经定期的基础代谢机制来更新MView表中之数。

 

这样一来物化视图的助益就是挺直观了,查询速度相对于一般性视图就会见大大升级。

当然,按照那定义之,数据存储下来的话,就会见及普通表一样占据很酷之贮存空间了。

 

东西之在一定出那道理。那这样的话相对于普通表来说,物化视图又产生什么长也?

1.物化视图有视图的长处,视图可以简化用户的操作,可以藏数据表之间的涉(引申出会对潜在数据提供安全保护),可以本着重构数据库提供一定之逻辑独立性等等,具体可参看

http://blog.csdn.net/fm0517/article/details/5625949

2.既是视图,那即便是一致漫长查询语句,这样的话就足以查询有一些的数额,如select
top
1000,这样尽管不需用总体之多少存储下来,稍微减轻了物化的先天不足(此条为呢自己考虑到的气象,并未尝试过)

3.既是会见储存数据,那呢得以就此作数据库复制了

上述是自身要好所能知道的,以下为查到的填补:

脚罗列了MView在其实被的要意图:

  • 减轻网络负担:通过MV将数据从一个数据库分发至多单例外之数据库及,通过对大多独数据库访问来减轻对单个数据库的大网负担。
  • 搭建分发环境:通过由一个中央数据库将数据分发及几近个节点数据库,达到分发数据的目的。
  • 复制数据子集:MV可以展开行级/列级的罗,这样可以复制需要的那么部分数。
  • 支持离线计算:MV不待专用的数据库连接,用户可以遵循好的要求来复制所用之那有数量。

 MView的刷新:

Oracle支持三栽刷新方式,1.意刷新 2.飞刷新 3.强制刷新

1.完全刷新:将MView的数码总体刨除,再冲创造MView时候的查询生成多少插入到MView

2.便捷刷新:只刷新上次刷新以来改的数量,很快(需要建立MView Log)

3.要挟刷新:当快速刷新无法展开的时段,系统会进行完全刷新,二者结合就是挟持刷新

刷新语句:

exec dbms_mview.refresh(‘mvt’, ‘F’) ; F为fast
C为complete,还有一个Force是默认的

刷新MView:

创建job来刷新, 在创建MView的上指定REFRESH语句 start
with:第一不成刷新时,Next:刷新时间隔

 

MView的必备有:

1.基表

2.隐藏的MView对象

3.MView表

4.基表的Index

5.MView的Index

对此要迅速刷新的MView:

6.MView Log

7.维护MLog$_的内触发器

 

相关文章