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

yizhihongxing

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日

相关文章

  • MySQL表和列的注释总结

    MySQL表和列的注释总结 在MySQL中,我们可以为表和列添加注释,以便于后续的维护和理解。本文将会详细讲解如何为MySQL表和列添加注释。 给表添加注释 第一种方法 使用CREATE TABLE时,可以在后面加上COMMENT参数,来为表添加注释。 示例: CREATE TABLE `user_info` ( `id` int(11) NOT NULL …

    other 2023年6月25日
    00
  • c#可以创建任意控件的拖动方法

    标准的拖放流程 首先,需要在窗体上放置一个容器控件,比如Panel或者GroupBox,在这个容器控件上,就可以进行拖放了,具体的代码流程如下: private void panel1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(Button))) …

    other 2023年6月26日
    00
  • 使用HttpClient实现文件的上传下载方法

    下面我将详细讲解使用HttpClient实现文件上传下载方法的完整攻略。 一、引入HttpClient依赖 在maven中添加HttpClient依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient…

    other 2023年6月27日
    00
  • 百度开发者工具怎么使用?百度开发者工具使用教程与常见问题

    百度开发者工具怎么使用? 百度开发者工具是一款专门为开发者设计的浏览器插件,可以帮助开发者更方便地调试和优化代码,提高开发效率。在使用百度开发者工具之前,我们先来了解一下它的使用方法和常见问题。 百度开发者工具使用教程 以下是百度开发者工具使用教程的具体步骤: 步骤1:下载和安装百度开发者工具 首先打开 Chrome 浏览器,在 Chrome 商店中搜索百度…

    other 2023年6月26日
    00
  • radmin 远程控制软件使用图文教程(服务器端配置与控制台连接)

    下面是关于“radmin 远程控制软件使用图文教程(服务器端配置与控制台连接)”的详细攻略。整个过程涉及到两部分:服务器端配置和控制台连接。我们将分别进行介绍。 服务器端配置 首先,在服务器上下载并安装 RAdmin Server 软件。可以从软件官网进行下载,也可以在其他渠道获得相应版本。 安装完成后,打开 RAdmin Server,进行配置。配置中需要…

    other 2023年6月27日
    00
  • 详解Java单元测试之JUnit篇

    当然!以下是关于Java单元测试之JUnit的详细攻略,包含两个示例说明: JUnit简介 JUnit是一个流行的Java单元测试框架,用于编写和运行可重复的、自动化的单元测试。它提供了一组注解和断言方法,使得编写和执行测试变得简单和高效。 步骤1:导入JUnit依赖 首先,确保在项目的构建文件(如Maven的pom.xml)中添加JUnit依赖。在depe…

    other 2023年10月19日
    00
  • Oracle 大小写转换函数实例详解

    Oracle 大小写转换函数实例详解 在Oracle数据库中,有几个函数可以用于大小写转换。这些函数可以帮助我们在查询和处理数据时进行大小写的转换。下面是一些常用的大小写转换函数的示例说明: 1. UPPER函数 UPPER函数用于将字符串中的所有字符转换为大写。以下是一个示例: SELECT UPPER(‘hello world’) AS result F…

    other 2023年8月17日
    00
  • vue父组件监听子组件数据更新方式(hook)

    当一个Vue组件被渲染后,可能需要在组件外部监听组件内部的数据变化,这时候就需要使用Vue提供的特殊钩子函数来实现了,下面是实现“vue父组件监听子组件数据更新”功能的完整攻略: 1.使用Vue提供的$refs属性 在子组件中定义一个方法,用于在数据更新时触发父组件的方法,并将数据通过参数形式传递给父组件,示例代码如下所示: //子组件中数据更新时触发父组件…

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