网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 sql server 数据页面头部结构解析
内容
    解析数据页面头部结构:
    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 = 65057594043367424
    存储单元的id
    metadata: partitionid = 65057594038386688
    数据页所在的分区号
    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)
    第一行数据
    第二行数据
    剩余空间
    行的偏移
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/17 10:55:11