楼主: biti_rainy

[精华] 关于block中数据的存储和重组的探究

[复制链接]
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
51#
发表于 2005-2-28 11:49 | 只看该作者
此外我还有个疑问,一个数据块中的dml tranction提交之后,当下一个select语句查询到前面已经修改过的row时,应该实现判断该row的header中的itl是否已经commit,如果commit的话,就不需要到回滚段中寻找,那我就纳闷,既然已经判断出该itl已经commit了,为什么oralce不在查询的时候就顺便将row header中的itl复位?免得下一次查询到该row的时候又要进行一次判断!!!

使用道具 举报

回复
论坛徽章:
10
授权会员
日期:2005-10-30 17:05:332010年世界杯参赛球队:科特迪瓦
日期:2010-04-15 12:20:472010年世界杯参赛球队:智利
日期:2010-04-13 17:15:21生肖徽章2007版:蛇
日期:2009-09-24 13:54:11生肖徽章2007版:龙
日期:2009-09-22 13:56:012009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:龙
日期:2009-02-10 13:45:15生肖徽章2007版:狗
日期:2009-02-03 13:53:34会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
52#
发表于 2005-2-28 12:10 | 只看该作者
这是延迟块清除后发生的情形,下一次查询或者DML涉及到该块时会更改块上ITL中的SCN。

使用道具 举报

回复
论坛徽章:
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
53#
 楼主| 发表于 2005-2-28 14:36 | 只看该作者
最初由 超级野人 发布
[B]此外我还有个疑问,一个数据块中的dml tranction提交之后,当下一个select语句查询到前面已经修改过的row时,应该实现判断该row的header中的itl是否已经commit,如果commit的话,就不需要到回滚段中寻找,那我就纳闷,既然已经判断出该itl已经commit了,为什么oralce不在查询的时候就顺便将row header中的itl复位?免得下一次查询到该row的时候又要进行一次判断!!! [/B]



当下一个select语句查询到前面已经修改过的row时,应该实现判断该row的header中的itl是否已经commit,如果commit的话  
--------  不仅要看是否commit,还要看commit的scn是否比查询的scn大,这个牵扯到一致读的问题,即使你清除了标记,它还是一致回退直到找到 commit  scn比查询scn小的时候的数据的。


这里关于 一致读 (consistent gets)  的理解的帖子不少。

使用道具 举报

回复
论坛徽章:
92
2011新春纪念徽章
日期:2011-01-25 15:42:33咸鸭蛋
日期:2012-03-19 10:46:00版主1段
日期:2012-05-15 15:24:11奥运会纪念徽章:排球
日期:2012-08-29 07:02:50奥运会纪念徽章:跳水
日期:2012-09-26 06:44:27ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32奥运会纪念徽章:击剑
日期:2012-10-12 07:20:332013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-02-13 15:13:20
54#
发表于 2005-3-23 16:23 | 只看该作者
似乎block里面的record slot一旦分配后就不会被删除;
如 insert into table select rownum ,,,,, from where rownum<=9;
     delete from table where id>=8
     block重新组合后,为id=8 id=9分配的处于最后的record entry slot也不会被删除。
又看了一遍《rdbms system management》关于page format 和record format的内容,再结合本贴实际的dump测试,发现自己更深入一层的理解oracle block实现算法

使用道具 举报

回复
论坛徽章:
42
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:022011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:08ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23
55#
发表于 2005-3-23 21:53 | 只看该作者
最初由 玉面飞龙 发布
[B]似乎block里面的record slot一旦分配后就不会被删除;
如 insert into table select rownum ,,,,, from where rownum<=9;
     delete from table where id>=8
     block重新组合后,为id=8 id=9分配的处于最后的record entry slot也不会被删除。
[/B]


因为slot号和rowid有关,而oracle不会改变rowid的,所以要保留.

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07
56#
发表于 2005-9-2 22:56 | 只看该作者
看完以后,我发现从一开始biti想了解的细节在concepts上面都有也~
参考9i concepts
1、块内空间的重用 2-6页下半页 data block overview
2、块内空间的重组 2-6页倒数4行开始 摘录两句:
Released space may or may not be contiguous with the main area of free space in a
data block. Oracle coalesces the free space of a data block only when (1) an INSERT
or UPDATE statement attempts to use a block that contains enough free space to
contain a new row piece, and (2) the free space is fragmented so the row piece
cannot be inserted in a contiguous section of the block. Oracle does this
compression only in such situations, because otherwise the performance of a
database system decreases due to the continuous compression of the free space in
data blocks.

注意,这里oracle把块内空间的重组叫作compression~
3、其他行链和行迁移的概念concepts都有的,dump出来研究可以加深理解,深化印象。

99%的知识都在书上,1%靠钻研。

btw: 俺们部门一进来的先看2个月的oracle concepts和administor guide~
看的细了收获很大的~

使用道具 举报

回复
论坛徽章:
0
57#
发表于 2006-9-25 23:01 | 只看该作者
顶一下,祝贺我终于看懂了这个贴子的70%内容.

使用道具 举报

回复
论坛徽章:
6
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
58#
发表于 2006-9-26 09:44 | 只看该作者
顶一下,学习中!

使用道具 举报

回复
论坛徽章:
2
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442008新春纪念徽章
日期:2008-02-13 12:43:03
59#
发表于 2006-9-27 22:49 | 只看该作者
看了之后心中的迷惑清晰了不少.

使用道具 举报

回复
论坛徽章:
18
ITPUB元老
日期:2005-02-28 12:57:002010新春纪念徽章
日期:2010-03-01 11:20:00
60#
发表于 2006-11-6 09:56 | 只看该作者
有些困惑得到了解释,虽然对实际操作用处不大,但还是觉得挺激发研究热情的,顶!

使用道具 举报

回复

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

本版积分规则 发表回复

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