SQL Server 2008存储结构之PFS结构

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:

PFS(Page Free Space),也叫页面自由空间,该页面用来跟踪一个文件中每一个特定的页面的利用率情况。一个文件中第二个页面(页码1)就是PFS页面,该页面的每个 字节都记录了相应页面的分配情况、页面类型、是否IAM页、是否包含删除记录、以及空间利用率信息;PFS能够管理和跟踪8088个页面的使用情况,即接 近64M的空间,以后每8088个页面将再出现一次。

  让我们首先了解一下PFS的页面管理字节的构造,管理单位为字节,每字节管理一个页面。

0 1 2 3 4 5 6 7
  页面是否分配 是否混合页面 是否IAM页面 是否幻影页面 空间利用率

  第0个bit为保留字节,始终为0

  第1个bit表示该页面是否已分配,我们知道GAM页用来管理区是否已分配,但一个区包含8个页面,所以用该bit用来准确定位该区的某个页面是否已分配出去了。

  第2个bit表示该页面是否混合分区的一个页面。

  第3个bit表示该页面是否是一个IAM页面。

  第4个bit表示该页面中是否包含幻影或已删除记录,这有助于SQL Server定期清理幻影或已删除记录。

  第5~7个页面表示该页面的空间使用率情况。

   • 0:表示该页面为空
• 1:表示该页面已使用1~50%
• 2:表示该页面已使用51~80%
• 3:表示该页面已使用81~95%
• 4:表示该页面已使用96~100%

  我们可以用dbcc page(testdb,1,1,2)来看一下PFS的页面结构,BUFFER和PAGE HEADER再次就不做详述了,PFS关于页面分配的信息是从第100个字节开始的,最后四个字节为系统保留字节,总计管理8088页。

  其中头四页均为44,换算成2进制即0100 0100,即为未分配(大概为保留页的缘故),且为已分配完成的混合区或统一类型区,非IAM页,且无幻影记录,空间利用率96~100%。

4F09C060:   00009c1f  44444444   00004444   60647060  †....DDDD..DD`dp`         
4F09C070:   
74706070   60606060   60707060   40404040  †tp`p`````pp`@@@@         
4F09C080:   
40404040   61706070   60606070   60306060  †@@@@ap`p```p` 0 ``         
4F09C090:   
60217024   60706060   60606060   40203020  †`!p$`p``````@  0           
4F09C0A0:   
20202820   60606060   60606070   60606060  †  ( ```````p````         
4F09C0B0:   
70203020   30706070   70607060   70203060  †p  0  0p`pp`p`p  0 `         
4F09C0C0:   
70203068   70607060   70607060   70607060  †p 0hp`p`p`p`p`p`         
4F09C0D0:   
70203060   60602020   60702030   20306070  †p  0 ```  `p  0   0 `p         
4F09C0E0:   
60702830   60707070   60606070   60706070  †`p( 0 `ppp```p`p`p         
4F09C0F0:   
60706070   40404020   20202020   60706070  †`p`p@@@     `p`p         
4F09C100:   
60706060   64616070   60706070   60706070  †`p``da`p`p`p`p`p         
4F09C110:   
60700000   00000000   00000000   00000000  †`p..............         
4F09C120:   
00000000   00000000   00000000   00000000  †................          
4F09DFF0:   
00000000   00000000   00000000   00006000  †..............`.         

 

  最后让我们用Internals Viewer插件看一下PFS页的全貌吧。

1
 

  第七个页面(页码6)被称为差异变更(Differential Changed Map,DCM)页面。它跟踪一个文件中的哪一个区在最新一次完全数据库备份以后被修改过。SQL Server用在增量备份时只对已发生数据变更的分区进行增量备份即可。

   第八个页面(页码7)被称为批量更改映射(Bulk Changed Map,BCM)页面,该页面当文件中的一个区在最小量或批量记日志操作中被使用时用到。就像GAM和SGAM页面,DCM和BCM页面针对它们代表的文 件区间中每一个区都有一个比特位相对应。这些页面的常规间距为511 230个页面。

  此外关于数据库在进行DML操作如何寻找合适的分区和页面对数据进行处理还是留待后续介绍吧。







本文转自baoqiangwang51CTO博客,原文链接:http://blog.51cto.com/baoqiangwang/413311,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
4月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
6月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
143 13
|
6月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
6月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
79 6
|
6月前
|
SQL 关系型数据库 数据处理
SQL结构
【7月更文挑战第28天】SQL结构
30 4
|
5月前
|
SQL 安全 Java
访问者模式问题之在上面的 SQL 结构定义中, sealed 接口的作用如何理解
访问者模式问题之在上面的 SQL 结构定义中, sealed 接口的作用如何理解
|
6月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
493 1
|
6月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
442 3
|
5月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
558 0
|
6月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。