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技术站