SQL Server存储引擎(4) - 数据

本文深入探讨了SQL Server中数据文件的管理,包括文件组、页(8K大小)和区(8个连续页组成扩展)的概念。详细介绍了混合区与统一区的分配方式,以及页的类型如非数据页(文件头、PFS、GAM、SGAM、IAM、DCM、BCM)和数据页。数据页内部结构包含页头、数据行和行偏移矩阵,讨论了行内数据、行溢出数据和大对象数据的存储。此外,还涉及数据行的开销,如状态位、定长列偏移量、NULL位图等。

数据

 

1、文件

1)主数据文件.mdf初始大小至少为3MB,次要数据文件.ndf初始大小,同日志文件一样至少为512KB

 

2SQL SERVER在逻辑上用文件组将文件分批管理(类似ORACLETABLESPACE),一个文件组可以包含多个文件,插入数据时,同一个文件组内的所有文件等比例增长(ORACLE的一个TABLESPACE中多个文件逐个使用),例如:文件组中有两个文件,初始大小分别为100M200M,此时插入3M数据,file1新增(100/300*3M=1Mfile2新增(200/300*3M=2M,如下图:

4.1

 

3)页(page),SQL SERVER中的数据文件由8K大小的数据页组成,每个数据文件中的页从0开始编号,页大小不可以自定义(ORACLE可自定义),且每个页只可以属于一个数据对象;

 

4)区(extent),或者叫扩展,8个物理上连续的页为一个扩展,即64K,扩展的存在是为了避免不停地分配8K的页面,提高页面分配的效率。SQL SERVER有两种类型的区,如下图:

4.2

 

4.1)混合区:为了节约空间,将少量数据的表或索引存放在混合区中,当表或索引的数据增长到8页时,再使用统一区来存放,一个混合区有8个页,每个页可以属于不同的数据对象,即每个混合区最多为8个数据对象共享;

 

4.2)统一区:由单个数据对象所有,如果对表中现有数据创建索引,且索引的大小超过8页,则索引将全部使用统一区,没有混合区的分配过程。

 

2、页

2.1、非数据页

1)文件头FILE HEADER),每个数据文件的第1页,页号为0,该页主要包括当前文件的属性描述,比如:文件组ID、文件ID、文件当前大小、文件最大/最小值、文件增量、一系列的LSN等;

 

2)页面空闲空间PFS),每个数据文件的第2页,页号为1,该页记录当前数据文件每个数据页的空间状态:该页是为空、已满 1% 50%、已满 51% 80%、已满 81% 95% 还是已满 96% 100%PFS页内用1个字节来描述1个数据页的分配及空间状态,每个PFS页约有可用空间8088个字节,即数据文件内约每64M的空间会出现一个PFS页。PFS页描述数据页空间状态如下图:

4.3

 

3)全局分配映射GAM),每个数据文件的第3页,页号为2

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值