首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

【交流贴】解析数据页头部结构,该怎么解决

2012-01-13 
【交流贴】解析数据页头部结构详情请访问我的blog:http://blog.csdn.net/HEROWANG/archive/2009/12/11/49870

【交流贴】解析数据页头部结构
详情请访问我的blog:http://blog.csdn.net/HEROWANG/archive/2009/12/11/4987066.aspx

 解析数据页面头部结构
if object_id('test') is not null
  drop table test
go
create table test( id int,birth datetime,name char(10))
 

insert into test
select 1,'2009-11-27','aaaa' union all
select 2,'2009-11-27','aaaa'

exec sp_spaceused 'test'

通过dbcc ind (test,test,0)  

  可以查看到该表有两个页,页号分别为109,和89,其中89为数据页。下面通过dbcc page 我们可以查看到该数据页的头部结构,下面我们就来解析头部结构每一个字段的含义。

dbcc traceon(3604)

dbcc page(test,1,89,1) 


注意在头文件中几个重要数据:

1、 pminlen = 26:除了表中固定数据所占的字节数外,还需要加上每行开始的4个字节

的行开销。即:

26=4(行开销)+4(int所占空间)+8(datetime 所占空间)+10(char(10)所占的空间)

2、 m_freeData = 154:页面文件的头结构+(存储每行数据需要的额外空间+数据自身的所占的空间)*(行数)

154=96+(7+22)*2=96+58

3、 m_freeCnt = 8034: 每个页面8K,减去m_freeData,再减去用来记录每行数据行偏移的所需要的空间,(每行2个字节)

8034=8192-154-4

4、 m_slotCnt = 2 该页面中数据的行数

注意下m_freeData这个字段的值,它实际的值是从第一个字节到最后一个字节的空间字节数。假如这个表的结构没有改变过,那么数据的存储情况是:




另外:对于头文件,因为水平有限,对原版英文的理解可能存在误差。英文好的同学可以参看另一个blog:http://blog.csdn.net/HEROWANG/archive/2009/11/27/4888774.aspx



[解决办法]
SF
[解决办法]
学习
[解决办法]
靠 这贴 一定UP
[解决办法]
学习
[解决办法]
FD
[解决办法]
ding a ~~!!
[解决办法]
随便看看
[解决办法]
收藏了,谢谢
[解决办法]
学习
[解决办法]
Study!
[解决办法]
一定要看
[解决办法]
xuex
[解决办法]
学习
[解决办法]
学习
[解决办法]
学习
[解决办法]
支持
[解决办法]
顶 加加分 没分了
[解决办法]
有点高深,,,,
[解决办法]
fdfdf
[解决办法]
围观。
[解决办法]
jf
[解决办法]
学习
[解决办法]
原来,俺也是为了分!
[解决办法]


帮顶下
[解决办法]
不错,学习一下
[解决办法]
呵呵 定你现
[解决办法]
学习
[解决办法]
.
[解决办法]
不错值得学习
[解决办法]
1 结构是值得研究一下
[解决办法]
学习,但好多我不能理解
[解决办法]
。太牛逼了。哈哈
[解决办法]
不错
[解决办法]
不会呀!哈哈!
[解决办法]
学习
[解决办法]
不错!顶下
[解决办法]

[解决办法]
fgdfasdfasf结婚头也不抬vr
[解决办法]

[解决办法]
学习,有点高深
[解决办法]
.
[解决办法]
..
[解决办法]
不要迷恋哥,哥只是个传说!
[解决办法]
顶起了``
[解决办法]
.
[解决办法]
学习
[解决办法]
学习了。。。
[解决办法]
学习
[解决办法]
每天回帖即可获得10分可用分
[解决办法]
mk

热点排行