SQL Server 2008存储结构之PFS结构

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

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
相关文章
|
8天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
47 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
1月前
|
SQL 存储 数据库
SQL实践篇(二):为什么微信用SQLite存储聊天记录
SQL实践篇(二):为什么微信用SQLite存储聊天记录
57 1
|
1月前
|
存储 SQL Web App开发
SQL实践篇(一):使用WebSQL在H5中存储一个本地数据库
SQL实践篇(一):使用WebSQL在H5中存储一个本地数据库
43 2
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
95 0
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之视图
【数据库SQL server】关系数据库标准语言SQL之视图
76 0
|
17天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
8天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
66 6
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1