楼主: samchj

[精华] consistent read(读一致性)的通俗理解

[复制链接]
论坛徽章:
0
61#
发表于 2006-7-6 16:48 | 只看该作者
又学到东西了  谢谢

使用道具 举报

回复
论坛徽章:
21
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-02-13 15:11:52马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:52
62#
发表于 2006-9-26 13:00 | 只看该作者
为了拿红包

使用道具 举报

回复
论坛徽章:
9
数据库板块每日发贴之星
日期:2006-09-06 01:01:55数据库板块每日发贴之星
日期:2006-09-07 01:02:41数据库板块每日发贴之星
日期:2006-09-23 01:02:09数据库板块每日发贴之星
日期:2006-09-26 01:03:58数据库板块每日发贴之星
日期:2006-10-06 01:02:42数据库板块每日发贴之星
日期:2006-10-08 01:02:15数据库板块每日发贴之星
日期:2006-10-09 01:02:43授权会员
日期:2006-12-23 10:14:58会员2007贡献徽章
日期:2007-09-26 18:42:10
63#
发表于 2006-10-2 12:26 | 只看该作者
最初由 samchj 发布
[B]顺便问一下,你有没有dsi-9i的,方便给我一份行不行。呵呵,我实在是对这个东西太感兴趣了,没有办法。我一天不懂,我就一天不爽。

还是要谢谢biti给我的这些启示。 [/B]

DSI是什么东西啊

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
25
生肖徽章2007版:龙
日期:2008-05-06 11:07:48咸鸭蛋
日期:2011-10-19 10:09:12ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24
64#
发表于 2008-2-20 16:43 | 只看该作者
学习了。楼主和biti等各位的探讨,让我受益匪浅。

使用道具 举报

回复
论坛徽章:
138
19周年集字徽章-19
日期:2020-06-08 08:30:56马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02路虎
日期:2013-11-22 12:26:18问答徽章
日期:2014-05-08 12:15:31
65#
发表于 2008-6-16 20:03 | 只看该作者
原帖由 biti_rainy 于 2006-7-6 15:49 发表


你把 顺序给搞反了:

首先,block  roll 并不是因为 读到某行数据而去 决定是否要roll。

当进程读到一个block当还没有去 read row 的时候,首先就会检查所有的itl ,一直roll 到 所有itl 都满足 查询条件为止。  根本不关心 lock  byte是多少。 直到所有itl 显示 block 满足查询条件的时候才去访问 row 数据。一旦去读row 数据,就根本不再关心 lock byte 或者itl 了。

lock  byte是给 dml 用的,不是给查询用的。


我觉得那个老外说的是对的,我想了下如果像你说的那样,那么效率会比较低,如果读到行的时候这个行上的lock byte是空的话,那么说明这个块是干净的块,这时候根本是不利用undo去构造一致读的块

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
66#
发表于 2008-6-17 19:48 | 只看该作者
原帖由 棉花糖ONE 于 2008-6-16 20:03 发表


我觉得那个老外说的是对的,我想了下如果像你说的那样,那么效率会比较低,如果读到行的时候这个行上的lock byte是空的话,那么说明这个块是干净的块,这时候根本是不利用undo去构造一致读的块



几年没研究过这些东西了,回过来又想一想

你可以做很简单一个实验:
用几个session分别在block上更新一个行,不提交
然后用另一个session去读这个block上没有被更新 的行,看看cr 是否跟干净的block上完全一样。

当然这个实验是正在执行的 dml,回过来我们想所有 dml都已经提交的情况
我们来做一个假定看看,假定 从 itl的角度来看,所有 itl 的 commit scn都满足查询的需求,那么实际上不需要去undo中获得信息来构造 cr block。  如果 itl中 commit  scn不满足查询的需求并且block已经 cleanout过了,当你读到一行数据且 lock byte为0 , 你如何决定这行数据是不是你所要的,是否还是得去根据 itl 一直 roll 到所有 itl 满足你的查询的需求为止。 只要有一个 itl  commit scn不满足,你就不能断定 lock byte为0的行的数据是不是你所需要的。

[ 本帖最后由 biti_rainy 于 2008-6-17 19:59 编辑 ]

使用道具 举报

回复
论坛徽章:
138
19周年集字徽章-19
日期:2020-06-08 08:30:56马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02路虎
日期:2013-11-22 12:26:18问答徽章
日期:2014-05-08 12:15:31
67#
发表于 2008-6-17 20:45 | 只看该作者
恩,大师说的有理,我trace了下 undo apply的过程,没改变的行和有改变的行,undo apply的过程是一样的

使用道具 举报

回复
论坛徽章:
18
ITPUB元老
日期:2005-02-28 12:57:002010年世界杯参赛球队:南非
日期:2010-04-19 12:17:452010新春纪念徽章
日期:2010-03-01 11:05:01生肖徽章2007版:牛
日期:2009-11-02 17:04:55祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:兔
日期:2008-09-22 19:33:40奥运会纪念徽章:蹦床
日期:2008-09-09 11:00:24奥运会纪念徽章:跳水
日期:2008-06-16 06:59:25ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-08 01:03:42
68#
发表于 2008-6-18 07:46 | 只看该作者
不会读行,类似读一个itl的环,从块头一直一部一部读一致的itl,itl已经在undo里了,如果事务没提交看得老

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
69#
发表于 2008-6-19 09:49 | 只看该作者
原帖由 oracledba 于 2008-6-18 07:46 发表
不会读行,类似读一个itl的环,从块头一直一部一部读一致的itl,itl已经在undo里了,如果事务没提交看得老



棉花糖ONE   的意思是 一读到block就做这件事情,oracle是否真的这样做的?然后质疑是否太浪费?

这是两个角度的问题,我们本来就是如你这样的在阐述这个问题,然后需要通过实验去证实oracle的确是这样做的,他去做了试验发现的确如此。
然后是否太浪费这个问题,也就是质疑oracle这个做法,我仅仅从理论上探讨,可以证明 不这样“浪费”还不行,oracle必须要做完这样的事情。从而说明oracle这样做的必要性。

使用道具 举报

回复
论坛徽章:
151
2014年新春福章
日期:2014-04-17 11:38:13奥运会纪念徽章:皮划艇静水
日期:2012-07-31 15:42:58奥运会纪念徽章:田径
日期:2012-07-10 16:21:10奥运会纪念徽章:跆拳道
日期:2012-06-20 22:07:29奥运会纪念徽章:皮划艇静水
日期:2012-06-16 02:55:21奥运会纪念徽章:曲棍球
日期:2012-06-13 10:09:19蛋疼蛋
日期:2012-05-19 23:20:41迷宫蛋
日期:2012-05-16 17:35:25版主2段
日期:2012-05-15 15:24:11双黄蛋
日期:2012-03-19 19:34:04
70#
发表于 2008-6-19 11:43 | 只看该作者
讨论得不错,这个帖子加一下精华吧,以后也好找些

使用道具 举报

回复

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

本版积分规则 发表回复

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