楼主: Kevin__Zhang

[精华] 你是否仍迷信rowid分页?

[复制链接]
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
31#
发表于 2012-5-7 21:09 | 只看该作者
不过rowid访问 自然是最快的

1 table access by user rowid

2 table access by user index rowid
在访问表时效率差不多的
而两者差别就在 如果有同样的rowid 访问有两次 rowid会更快(top p296)
而同样的访问11g会在result cache中保存说不定,说不定11g快就是这个原因!而10g没有resultcache!
呵呵!

使用道具 举报

回复
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
32#
发表于 2012-5-7 21:20 | 只看该作者
难道你的结论发现11g的新特性是 rc?

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
33#
发表于 2012-5-7 21:38 | 只看该作者
yyp2009 发表于 2012-5-7 21:20
难道你的结论发现11g的新特性是 rc?

跟RESULT CACHE一点关系都没有,你没有看懂楼主的意思。
一个块如果包含了所需要的多个ROWID, 那么只需要访问一次这个块而不是多次,这就是11G的优化。

使用道具 举报

回复
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
34#
发表于 2012-5-7 21:40 | 只看该作者
不过我没有11g没法测试 rc
你可参考老黄盖深入解析oracle
p235页

使用道具 举报

回复
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
35#
发表于 2012-5-7 21:43 | 只看该作者
newkid 发表于 2012-5-7 21:38
跟RESULT CACHE一点关系都没有,你没有看懂楼主的意思。
一个块如果包含了所需要的多个ROWID, 那么只需要 ...

难道这不是11grc的 缓存的结果?

使用道具 举报

回复
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
36#
发表于 2012-5-7 21:45 | 只看该作者
他确定逻辑读 物理读情况 也是要等到稳定了
再搞的  统计信息中为了稳定 统计信息会多执行两次
这样结果不是到rc中了吗?

使用道具 举报

回复
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
37#
发表于 2012-5-7 21:49 | 只看该作者
newkid 发表于 2012-5-7 21:38
跟RESULT CACHE一点关系都没有,你没有看懂楼主的意思。
一个块如果包含了所需要的多个ROWID, 那么只需要 ...

那么只需要访问一次这个块而不是多次,这就是11G的优化。----11g什么优化 ?还不是rc中缓存了一下
所以在access by user rowid 是比1og快了?
难道比这还高深?

使用道具 举报

回复
论坛徽章:
6
ITPUB季度 技术新星
日期:2011-08-31 15:27:58ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:36咸鸭蛋
日期:2012-03-05 13:10:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:00优秀写手
日期:2013-12-18 09:29:09
38#
 楼主| 发表于 2012-5-8 09:34 | 只看该作者
本帖最后由 Kevin__Zhang 于 2012-5-8 09:56 编辑
yyp2009 发表于 2012-5-7 21:49
那么只需要访问一次这个块而不是多次,这就是11G的优化。----11g什么优化 ?还不是rc中缓存了一下
所以 ...


说到点子上去了,区别就是:
1 table access by user rowid    -----多个rowid连续对于同一个block的访问,10g中不可重用,而11g中可重用

2 table access by index rowid   ----  多个rowid连续对于同一个block的访问,在10g中和11g中都是可重用的

所以11g中这个对table access by user rowid的新特性使得rowid分页大大受益。

至于oracle是怎么做到这点的,那就是另外一码事了。
我个人认为是11g的新特性,或者说是修复了10g中的缺陷,因为这并不是什么难事,和10g中table access by index rowid的原理是一模一样的。

至于result cache,我也想过,只不过我个人理解result cache并不是在块级别上的(在块级别上不就和buffer cache一样了),而是缓存行级别上的结果,所以何来“rc中缓存了一下”之说?

使用道具 举报

回复
论坛徽章:
6
ITPUB季度 技术新星
日期:2011-08-31 15:27:58ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:36咸鸭蛋
日期:2012-03-05 13:10:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:00优秀写手
日期:2013-12-18 09:29:09
39#
 楼主| 发表于 2012-5-8 09:50 | 只看该作者
newkid 发表于 2012-5-7 21:38
跟RESULT CACHE一点关系都没有,你没有看懂楼主的意思。
一个块如果包含了所需要的多个ROWID, 那么只需要 ...

是这样的。
原因:
1.11g中默认result cache是手动:
result_cache_mode                    string      MANUAL
也就是说,必须专门指定 hint才会考虑使用rc。
而我从头到尾都没有使用rc的hint。

2.rc是缓存的行级别的结果,而不是块级别的结果。

使用道具 举报

回复
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
40#
发表于 2012-5-8 21:57 | 只看该作者
Kevin__Zhang 发表于 2012-5-8 09:34
说到点子上去了,区别就是:
1 table access by user rowid    -----多个rowid连续对于同一个block的访 ...

得  我有点浮躁
没有用心测试
就掺和进来了
这个要向你学习了!

使用道具 举报

回复

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

本版积分规则 发表回复

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