SQL Server 2008存储结构之GAM、SGAM介绍

SQL Server 2008存储结构之GAM、SGAM介绍

在SQL Server 2008中,GAM和SGAM是管理数据文件中空闲页的结构。他们用于标记数据文件中哪些页面是可用的或者是已被使用的。下面是GAM和SGAM的详细介绍。

GAM:全局分配映像

GAM是SQL Server 2008中的一个元数据结构,用于管理数据文件中的空闲页面,它是一个位图结构的数组,每一个比特位代表数据文件中对应偏移量的页面是否已用,0表示未用,1表示已用。

GAM主要用于管理大于或等于8个页面的空闲空间。如果一个连续的空闲空间大于或等于8个页面,它们中的每一个页面的GAM位都会被设置为1。

以下是一个示例说明,假设有一个8个页面大小的连续空闲空间,它的偏移量是100,那么GAM数组中,偏移量为100至107的8个比特位都会被设置为1,从而表明这个连续的8个页面已经被使用。

SGAM:共享全局分配映像

SGAM也是一个元数据结构,它也是一个位图结构的数组,每一个比特位代表数据文件中对应偏移量的页面空闲情况。但与GAM不同的是,SGAM仅管理大小小于8个页面的连续空闲空间。

SGAM用于管理小于8个页面的空闲空间。如果一个连续的空闲空间小于8页,但大于或等于2个页面,SGAM会将其中第一个页面的SGAM位设置为1。这意味着该页面附近的剩余页面也可能是空闲的。

以下是一个示例说明,假设有一个6个页面大小的连续空闲空间,它的偏移量是200,那么SGAM数组中,偏移量为200至201的2个比特位都会被设置为1,因为虽然该空间大小小于8个页面,但是它可以与相邻的页面组成连续的8个页面空间。

总结

在SQL Server 2008中,GAM和SGAM是用于管理数据文件中空闲页的结构,他们用于标记数据文件中哪些页面是可用的或者是已被使用的。GAM主要用于管理大于或等于8个页面的空闲空间,SGAM则用于管理小于8页的空闲空间。

以上是“SQL Server 2008存储结构之GAM、SGAM介绍”的攻略,希望对您有所帮助。

附上示例代码:

设置GAM位

DBCC TRACEON (3604) --用于跟踪DBCC PAGE输出 

DBCC PAGE ('AdventureWorks', 1, 144, 3) --分析在文件ID为1中的第144号页面 

--从输出数据中可以发现已经设置了GAM 

设置SGAM位

DBCC TRACEON (3604)  

DBCC PAGE ('AdventureWorks', 1, 146, 3)  

--从输出数据中可以发现已经设置了SGAM 

以上示例代码中,通过调用DBCC PAGE命令来显示数据库文件页面的详细信息,例如页面ID、页面类型、页标识符、数据等。通过对输出数据的分析,可以确定GAM和SGAM是否已经设置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL Server 2008存储结构之GAM、SGAM介绍 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 【matlab】膨胀

    【matlab】膨胀 什么是膨胀? 膨胀是图像处理中的一种形态学运算,用于扩大和增强图像中物体的大小。它可以消除小的空洞(孔洞)或缝隙,并连接或分离物体。在数字图像处理中,常常使用膨胀与腐蚀(Erosion)共同构成对图像进行形态学滤波的操作。 膨胀的作用 对于二值图像,膨胀的作用主要有两种: 消除小的空洞(孔洞)或缝隙。在二值图像处理中,通常将物体标记为“…

    其他 2023年3月28日
    00
  • 解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题

    当在vue项目中安装依赖时,有时会遇到以下报错信息: Error: Cannot find module ‘chalk’ 这个错误不仅会影响我们的项目开发,同时也会影响到生产环境的稳定性。接下来,我将为大家详细讲解如何解决这个问题。 解决方案 其实我们遇到这个问题之后,解决方法也相对简单。首先,我们需要安装chalk模块,这个模块可以通过以下命令进行安装: …

    other 2023年6月27日
    00
  • Android四大组件之Activity深入解读生命周期

    Android四大组件之Activity深入解读生命周期 在Android开发中,Activity是最基本的组件之一。它提供了屏幕展示、用户交互等功能。掌握Activity的生命周期是非常重要的,这里将对Activity的生命周期进行详细解读。 Activity的生命周期 Activity的生命周期包含7种状态,分别为: onCreate() onStart…

    other 2023年6月27日
    00
  • shell脚本declare命令的用法详解(声明变量的属性和类型)

    Shell脚本declare命令的用法详解 在Shell脚本中,declare命令用于声明变量的属性和类型。它可以帮助我们更好地控制变量的行为和使用。下面是declare命令的用法详解,包括属性和类型的说明,并提供了两个示例说明。 声明变量的属性 declare命令可以用来声明变量的属性,常见的属性包括: -r:将变量声明为只读,即不可修改的常量。 -i:将…

    other 2023年8月9日
    00
  • WPF基础——Application

    WPF基础——Application的完整攻略 WPF(Windows Presentation Foundation)是微软推出的一种基于.NET Framework的用户界面框架,它提供了一种基于XAML的声明式编程模型,可以轻松地创建富客户端应用程序。在WPF中,Application是一个重要的类,它提供了应用程序级别的功能和属性。本文将介绍WPF中…

    other 2023年5月5日
    00
  • Python使用自带的ConfigParser模块读写ini配置文件

    使用Python读写ini配置文件可以使用自带的ConfigParser模块,示例如下: 1. 写入ini文件 import configparser # 创建config对象 config = configparser.ConfigParser() # 修改配置变量 config.add_section(‘DATABASE’) config.set(‘DA…

    other 2023年6月25日
    00
  • 【转】winrar命令行详解

    【转】winrar命令行详解 WinRAR是一个强大的文件压缩、解压缩软件,常常被用于在Windows系统中对文件进行压缩、备份和归档。除了通过图形界面使用WinRAR,还可以通过命令行来使用它提供的功能。本文将详细解释WinRAR的命令行参数及其用法。 WinRAR命令行用法 WinRAR的命令行用法如下: WinRAR [<命令>] -[&l…

    其他 2023年3月28日
    00
  • mybatis小于

    以下是详细讲解“MyBatis小于的完整攻略,过程中至少包含两条示例说明”的标准Markdown格式文本: MyBatis小于的用法 在MyBatis中,小于操作符可以用于查询满足某个条件的所有记录。是小于操作符的详细介绍和用法。 小于操作符 小于操作(<)用于查询满足某个条件的所有记录,该条件是某个字段的值小于指定的值。以下是小于操作符的语法: SE…

    other 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部