12
返回列表 发新帖
楼主: onunix

物化视图是什么意思?

[复制链接]
论坛徽章:
31
数据库板块每日发贴之星
日期:2008-08-25 01:02:02数据库板块每日发贴之星
日期:2011-08-14 01:01:01茶鸡蛋
日期:2011-08-14 16:42:13ITPUB十周年纪念徽章
日期:2011-09-27 16:32:49ITPUB十周年纪念徽章
日期:2011-11-01 16:24:512012新春纪念徽章
日期:2012-01-04 11:54:26版主1段
日期:2012-05-15 15:24:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19现任管理团队成员
日期:2012-10-18 17:10:24马上有车
日期:2014-02-19 11:55:14
11#
发表于 2008-8-26 23:42 | 只看该作者
你可以定义一个job来让它定时自动完成刷新

使用道具 举报

回复
论坛徽章:
13
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26参与SAP云计算之旅活动纪念
日期:2011-05-23 11:02:23参与SAP云计算之旅活动纪念
日期:2011-05-17 13:35:452010广州亚运会纪念徽章:射箭
日期:2011-03-13 22:12:022011新春纪念徽章
日期:2011-02-18 11:43:342010新春纪念徽章
日期:2010-03-01 11:06:12数据库板块每日发贴之星
日期:2010-01-17 01:01:082010新春纪念徽章
日期:2010-01-04 08:33:08祖国60周年纪念徽章
日期:2009-10-09 08:28:00
12#
发表于 2009-10-18 23:11 | 只看该作者
物化视图的类型:ON DEMAND、ON COMMIT
    二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。

使用道具 举报

回复
论坛徽章:
4
ITPUB官方微博粉丝徽章
日期:2011-08-22 09:11:372012新春纪念徽章
日期:2012-01-04 11:55:05蛋疼蛋
日期:2012-04-25 13:22:10奥运会纪念徽章:田径
日期:2012-06-22 22:12:46
13#
发表于 2009-10-19 01:37 | 只看该作者
学习

使用道具 举报

回复
论坛徽章:
1
参与WIN7挑战赛纪念
日期:2009-11-09 13:04:43
14#
发表于 2009-11-4 21:17 | 只看该作者
物化视图我感觉就是对你所需要的指定结果的统计信息的纪录,我猜想它的实现机制类似trigger(把统计信息存到另张表中.)
比如我创建了一张表
create table my_all_objects  as select * from all_objects

然后创建一个物化视图
create materialize view my_all_objects_view
build immediate
refresh on commit
enable rewrite
as select object_type, count(*) from my_all_objects group by object_type;

analyze table my_all_objects_view compute statistics;

物化视图最主要的用处就是性能

现在用select object_type, count(*) from my_all_objects group by object_type;
oracle会自重写你的查询语句,最后的结果是从物化视图直接查询结果,这样速度能够提高很快.

但是我感觉这里有个问题:

我再次往my_all_objects插入一条纪录,但没有commit,
此时在用
select object_type, count(*) from my_all_objects group by object_type;
查询结果,通过toad查看执行顺序确实用到了物化视图,但是响应时间和没有用物化视图几乎差不多.
此时,我再对插入的结果进行commit,之后,结果响应时间依然和没有使用物化视图差不多.
这就有一个疑问,为什么会这样?

如果我的插入操作和commit操作连续,则反复多次查询也不会出现上面的情况.
另外,如果我直接用物化视图进行查询:
select * from my_all_objects_view 则不会出现响应时间没有任何改观的情况,是不是因为oracle的rewrite的问题?

[ 本帖最后由 killtry 于 2009-11-4 21:18 编辑 ]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表