SQL Server管理页和区的数据结构(对设计和开发高效执行的数据库有帮助)

原创 2011年03月01日 14:59:00

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

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

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

3、页可用空间 (PFS) 

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

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

 

4、“索引分配映射 (IAM)”页将映射分配单元使用的数据库文件中 4 GB 部分中的区。分配单元有下列三种类型:

  • IN_ROW_DATA

    用于存储堆分区或索引分区。
  • LOB_DATA

    用于存储大型对象 (LOB) 数据类型,例如 xmlvarbinary(max)varchar(max)
  • ROW_OVERFLOW_DATA

    用于存储超过 8,060 字节行大小限制的 varcharnvarcharvarbinarysql_variant 列中存储的可变长度数据

 

5、差异更改映射表 (DCM)
跟踪自上次执行 BACKUP DATABASE 语句后更改过的区。如果扩展盘区的位是 1,则自上次执行 BACKUP DATABASE 语句后扩展盘区已被修改。如果位是 0,则扩展盘区没有被修改。 差异备份只读取 DCM 页便可以确定已修改的区。这样大大减少了差异备份必须扫描的页数。运行差异备份所需的时间与自上次执行 BACKUP DATABASE 语句之后修改的区数成正比,而不是与整个数据库的大小成正比。 

6、大容量更改映射表 (BCM)
跟踪自上次执行 BACKUP LOG 语句后,被大容量日志记录操作修改的区。如果某个扩展盘区的位是 1,表明自上次执行 BACKUP LOG 语句后,该扩展盘区已经被有日志记录的大容量复制操作修改。如果位是 0,则该扩展盘区未被有日志记录的大容量复制操作修改。尽管所有数据库中都显示 BCM 页,但只有在数据库使用大容量日志记录恢复模式时,才会与 BCM 页有关。在此恢复模式中,当执行 BACKUP LOG 时,备份进程将扫描 BCM 查找已经修改的区。然后,将那些区包括在日志备份中。如果数据库从数据库备份和一系列事务日志备份恢复,便可以恢复大容量日志记录操作。在使用简单恢复模式的数据库中,BCM 页是不相关的,因为大容量日志记录操作不记入日志。在使用完整恢复模式的数据库中,BCM 页同样不相关,因为该恢复模式将大容量日志记录操作视为有完整日志记录的操作。

 

相关文章推荐

TB级SQL Server数据库表分区的实现

一般在千万级的数据压力下,分区是一种比较好的提升性能方法。本文将介绍SQL Server数据库表分区的实现。 回顾下经常使用的索引 一 .聚集索引 聚集索引的页级别包含了索引键,还包...

SQL Server中TempDB管理(版本存储区的一个example)

原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive/tags/tempdb/ http://blogs.msdn.com/b/...

数据库课程设计银行管理系统(SQL Server)

1需求分析          生活在21世纪,我们每个人的日常生活免不了跟银行打交道。安全、规范、操作简单、功能齐全的银行管理系统能使业务得以顺利流畅的办理,使人们获得极好的用户体验。基于这样的背景,...

千万级SQL Server数据库表分区的实现

千万级SQL Server数据库表分区的实现 2010-09-10 13:37 佚名 数据库 我要评论(0) 字号:T | T 一般在千万级的数据压力下,分区是一种比较好的...

SQL server与Oracle数据同步以及数据库结构同步的问题

数据同步一 1. 将oracle系统作为SQL server的链接服务器加入到SQL server中 2. 使用SQL语句通过链接服务器将SQLServer数据写入Oracle中。...

SQL Server 2000 数据结构剖析(1): 日志文件结构

SQL Server 2000是一个可以自增长的可复写的循环文件,最小增长大小为248K(256K-8K),而一个数据库的多个日志文件,是被轮流选择写入日志的,也就是同时循环使用,所以日志文件如果要增...

图书馆数据库管理系统结业毕业课程论文设计-SQL Server图书馆管理系统-含源代码

图书馆数据库管理系统结业毕业课程论文设计-SQL Server图书馆管理系统-含源代码 很多朋友对毕业设计的制作感到苦恼,学校里为了游戏以及自己的人生大事(你懂得大笑)所奔波,不过经营的是游刃有余。...

SQL Server数据库设计与系统管理

  • 2012年02月19日 17:47
  • 140KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL Server管理页和区的数据结构(对设计和开发高效执行的数据库有帮助)
举报原因:
原因补充:

(最多只允许输入30个字)