楼主: grassbell

[精华] 偷窥Data block 的物理结构

[复制链接]
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
51#
发表于 2004-9-1 11:19 | 只看该作者
最初由 grassbell 发布
[B]5. 关于Minimum row length
Oracle确实有Minimun row length的要求,即5 bytes的实际数据。如果加上3 bytes的row header, 和在block hader 中占据的2 bytes的row directory entry ,还有1byte的column长度,应该一共是11 bytes

所以,一个block中最多包括 db_block_size/11 条rows

详情可参考(该贴也简单介绍了row的物理结构):
http://www.itpub.net/showthread. ... 15&pagenumber=1 [/B]



那么我想问一下,3个字节的row header包含什么内容?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
21
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36马上有车
日期: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:36
52#
 楼主| 发表于 2004-9-1 13:14 | 只看该作者
最初由 超级野人 发布
[B]


那么我想问一下,3个字节的row header包含什么内容? [/B]


block_row_dump:
tab 0, row 0, @0x1f9b ==> 3bytes row header
tl: 5 fb: --H-FL-- lb: 0x1 cc: 1 ==> lb: 0x1 表示transaction 0x1,cc 表示column的个数
col 0: [ 1] 61 ==> column length(1 byte if length<250; otherwise 3 bytes) and values
end_of_block_dump

或许就是
tab 0, row 0, @0x1f9b
tl: 5 fb: --H-FL-- lb: 0x1 cc: 1

这些信息

使用道具 举报

回复
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
53#
发表于 2004-9-1 15:41 | 只看该作者
说得明白一点好么?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
21
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36马上有车
日期: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:36
54#
 楼主| 发表于 2004-9-1 15:58 | 只看该作者
tl: 5 fb: --H-FL-- lb: 0x1 cc: 1

一共多长,状态标记,被哪个transaction 用到,有几个列

这些信息应该都存在row header 中

使用道具 举报

回复
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
55#
发表于 2004-9-1 17:05 | 只看该作者
最初由 grassbell 发布
[B]tl: 5 fb: --H-FL-- lb: 0x1 cc: 1

一共多长,状态标记,被哪个transaction 用到,有几个列

这些信息应该都存在row header 中 [/B]


一共多长,是指整个row的长度么?既然已经记录有所有列的长度,为什么还要再记录此值呢?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
21
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36马上有车
日期: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:36
56#
 楼主| 发表于 2004-9-1 17:08 | 只看该作者

不知道,或许懒得再算一遍吧

这个有什么意义吗?

使用道具 举报

回复
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
57#
发表于 2004-9-2 08:42 | 只看该作者
其实我想指出的是,每一个row的header所占用的3个字节中,应该并不包括该row的lenth。可以做个试验,建立一个表,(两列),然后每行插入300多个字节(每列100多个字节),可以发现,row的header的三个字节的长度并没有发生改变,如果是记录该行的长度的话,300个字节至少应该需要2个字节来存储该row的总长度吧。可实际上去没有。所以说三个字节中有一个是包含column的数量的,一个是存储tranction 标记,只是另外一个字节是存储什么信息的,我还没想明白

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
58#
发表于 2004-9-2 09:01 | 只看该作者
to: 超级野人

知识上的很多东西,不知道的可以上网多看看别人写的.全靠自己一点点的看很累的
我看你很努力的想去了解oracle的一些格式   你上google上搜  oracled.doc   这篇文章可以告诉你很多

使用道具 举报

回复
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
59#
发表于 2004-9-2 12:01 | 只看该作者
难道这样一点一点的讨论不是很好么,是的,网上有很多这样的答案,可是如果都这样的话,岂不是是去讨论的意义了么?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
21
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36马上有车
日期: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:36
60#
 楼主| 发表于 2004-9-2 17:01 | 只看该作者
参考:
http://download-west.oracle.com/ ... /c11schem.htm#30413

看下面那张图,然后有对row header 的解释:
The row header precedes the data and contains information about:

Row pieces
Chaining (for chained row pieces only)
Columns in the row piece
Cluster keys (for clustered data only)

其他问题都可以在这里找到

使用道具 举报

回复

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

本版积分规则 发表回复

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