解析SQL数据库数据页面头部结构_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

解析SQL SERVER 数据页面头部结构

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

本篇关键词:头部结构页面数据
黑客防线网安网讯:if object_id('test') is not null   drop table testgocreate table test( id int,birth datetime,name char(10)) insert into testselect 1,'2009-11-27&...

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'

  结构:

  name   rows   reserved   Data   index_size   unused
  test   2             16 KB   8 KB   8 KB   0 KB

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

  dbcc traceon(3604)

  dbcc page(test,1,89,1)   

  m_pageId = (1:89)   数据页号
  m_headerVersion = 1   头文件版本号,从7.0以后,一直为1
  m_type = 1   页面类型,1为数据页
  m_typeFlagBits = 0x4   数据页和索引页为4,其他页为0
  m_level = 0   该页在索引页(B树)中的级数
  m_flagBits = 0x8000   页面标志
  m_objId (AllocUnitId.idObj) = 83 
  m_indexId (AllocUnitId.idInd) = 256 
  Metadata: AllocUnitId = 72057594043367424   存储单元的ID
  Metadata: PartitionId = 72057594038386688   数据页所在的分区号
  Metadata: IndexId = 0   页面的索引号
  Metadata: ObjectId = 2089058478   该页面所属的对象的id,可以使用object_id获得
  m_prevPage = (0:0)   该数据页的前一页面
  m_nextPage = (0:0)   该数据页的后一页面
  pminlen = 26   定长数据所占的字节数
  m_slotCnt = 2   页面中的数据的行数
  m_freeCnt = 8034   页面中剩余的空间
  m_freeData = 154   从第一个字节到最后一个字节的空间字节数
  m_reservedCnt = 0   活动事务释放的字节数
  m_lsn = (30:170:20)   日志记录号
  m_xactReserved = 0   最新加入到m_reservedCnt领域的字节数
  m_xdesId = (0:0)   添加到m_reservedCnt 的最近的事务id
  m_ghostRecCnt = 0   幻影数据的行数
  m_tornBits = 0   页的校验位或者被由数据库页面保护形式决定分页保护位取代

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

  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这个字段的值,它实际的值是从第一个字节到最后一个字节的空间字节数。假如这个表的结构没有改变过,那么数据的存储是

  头部结构(96B)
  第一行数据
  第二行数据
  剩余空间
  行的偏移

  m_freeData的值是这三部分数据所占空间的总和
但是假如修改了表结构,没有进行分页,数据会向后向下移动,那么表的存储情况为变为:

  头部结构(96B) 
 
   第一行数据
  第二行数据
  剩余空间
  行的偏移

  m_freeData的值是这五部分数据所占空间的总和

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-10529-1.html
网站维护教程更新时间:2012-03-21 03:05:43  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer