SQLSERVER的数据页面结构

SQLSERVER的数据页面结构
 
在论坛里经常有人问到SQLSERVER是怎麽存放基础表数据的,既然不想查MSDN,本人就在这里说一下吧
每一行数据在数据页面里是怎麽存放的?
 
结构组成:每个SQLSERVER的数据页面大致分成3个部分:页头,页尾偏移量,数据存储 这3个部分
 
假设现在有一个表,表的结构是:
CREATE TABLE test(
  a INT,
  b INT
 
他在1:100这个页面上存储数据(1是 数据库的数据文件ID 亦即是FILEID,100 是PAGEID 页面编号)。
 
这个页面结构大致如下图
 
 
在页头部分,会记录页面属性,包括页面编号等,还会记录当前页面空闲部分的起始位置在哪里  www.2cto.com  
 
这样SQLSERVER在要插入新数据的时候,就能够很快地找到开始插入的位置,而页尾的偏移量
 
记录了每一条数据行的起始位置。这样SQLSERVER在找每一条记录的时候,就能很快找到不会
 
把前一条记录和后一条搞混。在图例这一页里现在有两条记录:(1,100)和(2,200)第一条
 
记录的开始位置是96,第二条记录的开始位置是111,从126开始,是空闲的空间
 
当页面里的数据行发生变化的时候,SQLSERVER不但要去修改数据本身,还要修改这些偏移量的值,
 
以保证SQLSERVER能够继续准确地管理数据页面里的每一行。

文章来源:http://www.2cto.com/database/201212/174695.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值