博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库SQLServer如何管理区分配和可用空间
阅读量:5864 次
发布时间:2019-06-19

本文共 1355 字,大约阅读时间需要 4 分钟。

下面使用图示的方式给你讲解数据如何管理分区和可用空间

 

用来管理区分配情况并跟踪可用空间的 SQL Server 数据结构相对而言比较简单。这有下列好处:

  • 可用空间信息被紧密压缩,因此包含此信息的页相对较少。

    这样,可提高速度,因为它减少了检索分配信息时所需的磁盘读取量。同时还可增加分配页保留在内存中的机会并且不需要更多的读操作。

  • 大多数分配信息不是链在一起的。这就简化了对分配信息的维护。

    可以快速执行每个页的分配或释放。这将减少需要分配页或释放页的并发任务之间的争用。


SQL Server 使用两种类型的分配映射表来记录区的分配:

  • 全局分配映射表 (GAM)

    GAM 页记录已分配的区。每个 GAM 包含 64,000 个区,相当于近 4 GB 的数据。GAM 用一个位来表示所涵盖区间内的每个区的状态。如果位为 1,则区可用;如果位为 0,则区已分配。

  • 共享全局分配映射表 (SGAM)

    SGAM 页记录当前用作混合区且至少有一个未使用的页的区。每个 SGAM 包含 64,000 个区,相当于近 4 GB 的数据。SGAM 用一个位来表示所涵盖区间内的每个区的状态。如果位为 1,则区正用作混合区且有可用页。如果位为 0,则区未用作混合区,或者虽然用作混合区但其所有页均在使用中。

根据区当前的使用情况,GAM 和 SGAM 中每个区具有以下位模式。

这将简化区管理算法。若要分配统一区,数据库引擎将在 GAM 中搜索为 1 的位,并将其设置为 0。若要查找具有可用页的混合区,数据库引擎将在 SGAM 中搜索为 1 的位。若要分配混合区,数据库引擎将在 GAM 中搜索为 1 的位,将其设置为 0,然后将 SGAM 中对应的位设置为 1。若要释放区,数据库引擎确保将 GAM 位设置为 1,将 SGAM 位设置为 0。实际上,数据库引擎内部使用的算法比本主题中介绍的更为复杂,因为数据库引擎在数据库中均匀分布数据。但是,由于无需管理区分配信息链,因此即使是实际算法也会被简化。

 


页可用空间 (PFS) 页记录每页的分配状态,是否已分配单个页以及每页的可用空间量。PFS 对每页都有一个字节,记录该页是否已分配。如果已分配,则记录该页是为空、已满 1% 到 50%、已满 51% 到 80%、已满 81% 到 95% 还是已满 96% 到 100%。

将区分配给对象后,数据库引擎将使用 PFS 页来记录区中的哪些页已分配或哪些页可用。数据库引擎必须分配新页时,将使用此信息。保留的页中的可用空间量仅用于堆和 Text/Image 页。数据库引擎必须找到一个具有可用空间的页来保存新插入的行时,使用此信息。索引不要求跟踪页的可用空间,因为插入新行的点是由索引键值设置的。

在数据文件中,PFS 页是文件头页之后的第一页(页码为 1)。接着是 GAM 页(页码为 2),然后是 SGAM 页(页码为 3)。第一个 PFS 页之后是一个大小大约为 8,000 页的 PFS 页。在第 2 页的第一个 GAM 页之后还有另一个 GAM 页(包含 64,000 个区),在第 3 页的第一个 SGAM 页之后也有另一个 SGAM 页(包含 64,000 个区)。下图显示了数据库引擎用来分配和管理区的页顺序。

用于分配和管理区的页

转载地址:http://kvunx.baihongyu.com/

你可能感兴趣的文章
weblogic11g 节点管理器 nodemanager
查看>>
给ecshop后台增加管理功能页面
查看>>
葵花宝典
查看>>
利用 .NET 框架简化发布和解决 DLL Hell 问题
查看>>
多文档标题乱码
查看>>
xe 心跳
查看>>
C#开发高性能Log Help 类设计开发
查看>>
MVC文件上传05-使用客户端jQuery-File-Upload插件和服务端Backload组件自定义上传文件夹...
查看>>
【整理】待毕业.Net码农就业求职储备
查看>>
Accessibility应用之focus篇
查看>>
【deep learning】斯坦福CS231n—深度学习与计算机视觉(资料汇总)
查看>>
【学习Android NDK开发】Ubuntu真机调试
查看>>
重构(Ruby版)
查看>>
LightOJ 1021 Painful Bases(状态压缩)
查看>>
DotnetBar 8.8.0.0 破解
查看>>
sql ntext數據類型字符替換
查看>>
linux之ssh无密码访问
查看>>
优化MySQL数据库性能的八种方法
查看>>
cocos2d的常用动作及效果总结之二:Composition actions
查看>>
算法导论16.2-2 0-1背包问题
查看>>