Sql Server 中 GAM、SGAM、PAM、IAM、DCM 和 BCM 的详解与区别
Sql Server 中 GAM、SGAM、PAM、IAM、DCM 和 BCM 的详解与区别
GAM、SGAM、PAM、IAM、DCM 和 BCM 都是 SQL Server 中用来管理空间分配的一些特殊分配映射表。理解他们的区别与作用,对于理解 Sql Server 物理数据库体系结构有着非常重要的作用。
Sql Server 区的管理(GAM,SGAM)
全局分配映射表 (GAM) :统一盘区,GAM 页记录已分配的区。每个 GAM 包含 64,000 个区,相当于近 4 GB 的数据。GAM 用一个位来表示所涵盖区间内的每个区的状态。如果位为 1,则区可用;如果位为 0,则区已分配。
共享全局分配映射表 (SGAM) :由多个对象共同拥有该盘区,SGAM 页记录当前用作混合区且至少有一个未使用的页的区。每个 SGAM 包含 64,000 个区,相当于近 4 GB 的数据。SGAM 用一个位来表示所涵盖区间内的每个区的状态。如果位为 1,则区正用作混合区且有可用页。如果位为 0,则区未用作混合区,或者虽然用作混合区但其所有页均在使用中。
Sql Server 可用空间的管理(PFS)
PFS(Page Free Space):也叫页面自由空间,该页面用来跟踪一个文件中每一个特定的页面的利用率情况,是以页为单位的。一个文件中第二个页面(页码1)就是PFS页面,该页面的每个字节都记录了相应页面的分配情况、页面类型、是否IAM页、是否包含删除记录、以及空间利用率信息;PFS能够管理和跟踪8088个页面的使用情况,即接近64M的空间,以后每8088个页面将再出现一次。
Sql Server 对象使用空间的管理(PFS)
"索引分配映射 (IAM)"页:将映射分配单元使用的数据库文件中 4 GB 部分中的区。主要用来标示 Sql Server 对象使用了哪些区。比如A表的非聚集索引B占用了 7895 4个区。这样,在再对此对象做更改的时候,能够快速的找到这4个区,更改文件。
当 SQL Server 数据库引擎必须在当前页中插入新行,而当前页中没有可用空间时,它将使用 IAM 和 PFS 页查找要将该行分配到的页,或者(对于堆或 Text/Image 页)查找具有足够空间容纳该行的页。数据库引擎使用 IAM 页查找分配给分配单元的区。对于每个区,数据库引擎将搜索 PFS 页,以查看是否有可用的页。每个 IAM 和 PFS 页覆盖大量数据页,因此一个数据库内只有很少的 IAM 和 PFS 页。这意味着 IAM 和 PFS 页通常位于内存中的 SQL Server 缓冲池中,所以能够很快找到它们。对于索引,新行的插入点由索引键设置。在这种情况下,不会出现上述搜索过程。
Sql Server 对已修改区得管理(DCM、BCM)
差异更改映射表 (DCM) :
这样便可以跟踪自上次执行 BACKUP DATABASE 语句后更改过的区。如果扩展盘区的位是 1,则自上次执行 BACKUP DATABASE 语句后扩展盘区已被修改。如果位是 0,则扩展盘区没有被修改。
差异备份只读取 DCM 页便可以确定已修改的区。这样大大减少了差异备份必须扫描的页数。运行差异备份所需的时间与自上次执行 BACKUP DATABASE 语句之后修改的区数成正比,而不是与整个数据库的大小成正比。
大容量更改映射表 (BCM) :
跟踪自上次执行 BACKUP LOG 语句后,被大容量日志记录操作修改的区。如果某个扩展盘区的位是 1,表明自上次执行 BACKUP LOG 语句后,该扩展盘区已经被有日志记录的大容量复制操作修改。如果位是 0,则该扩展盘区未被有日志记录的大容量复制操作修改。
尽管所有数据库中都显示 BCM 页,但只有在数据库使用大容量日志记录恢复模式时,才会与 BCM 页有关。在此恢复模式中,当执行 BACKUP LOG 时,备份进程将扫描 BCM 查找已经修改的区。然后,将那些区包括在日志备份中。如果数据库从数据库备份和一系列事务日志备份恢复,便可以恢复大容量日志记录操作。在使用简单恢复模式的数据库中,BCM 页是不相关的,因为大容量日志记录操作不记入日志。在使用完整恢复模式的数据库中,BCM 页同样不相关,因为该恢复模式将大容量日志记录操作视为有完整日志记录的操作。
DCM 页和 BCM 页的间隔与 GAM 和 SGAM 页的间隔相同,都是 64,000 个区。在物理文件中,DCM 和 BCM 页位于 GAM 和 SGAM 页之后。
转自:http://www.cnblogs.com/xunziji/archive/2011/02/22/1961465.html
转载于:https://www.cnblogs.com/gered/p/9270574.html
Sql Server 中 GAM、SGAM、PAM、IAM、DCM 和 BCM 的详解与区别相关推荐
- c语言运算符 amp 的意思,C++中运算符 amp;和amp;amp;、|和|| 的详解及区别
C++中运算符 &和&&.|和|| 的详解及区别 简介: &&是逻辑与运算符,||是逻辑或运算符,都是逻辑运算符,两边只能是bool类型 &与| 既可以 ...
- SQL Server时间粒度系列----第7节日历数据表详解
本文目录列表: 1.时间粒度有关描述 2.时间维度有关功能函数3.日历数据表 4.日历数据表数据填充 5.总结语 6.参考清单列表 时间粒度有关描述 将该系列涉及到的时间粒度以及分钟以下的粒度做个 ...
- sql server tcp 信号灯超时时间已到_「图文详解」TCP为啥要3次握手和4次挥手?3次挥手不行吗?...
原文链接:https://www.cnblogs.com/qdhxhz/p/8470997.html TCP有6种标示:SYN(建立联机) ACK(确认) PSH(传送) FIN(结束) RST(重置 ...
- SQL Server数据库锁的类型、用法及注意事项详解
一.为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新:A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读:A用户 ...
- java中synchronized(同步代码块和同步方法)详解及区别
问题的由来: 看到这样一个面试题: ? 1 2 3 4 5 6 //下列两个方法有什么区别 public synchronized void method1(){} public void metho ...
- sql 闩锁 原因_关于SQL Server中的闩锁
sql 闩锁 原因 SQL Server locks, discussed in the article All about locking in SQL Server, which is appli ...
- SQL server 中SQL语句实战操作
学习网址链接: https://www.w3school.com.cn/sql/sql_top.asp 学习案例链接: https://wenku.baidu.com/view/720053b459f ...
- aws rds监控慢sql_AWS RDS SQL Server中的初始Windows身份验证配置
aws rds监控慢sql In this article, we will be exploring the process of enabling Windows authentication i ...
- aws rds监控慢sql_AWS RDS SQL Server中的高级Windows身份验证配置
aws rds监控慢sql This article will cover advanced configurations for Windows Authentication in AWS RDS ...
最新文章
- 【组队学习】【32期】scikit-learn教程
- AI在传统制造业的应用落地!
- 升维:ValueError: all the input arrays must have same number of dimensions,
- 【C 语言】字符串模型 ( 两头堵模型 | 将 两头堵模型 抽象成业务模块函数 | 形参返回值 | 函数返回值 | 形参指针判空 | 形参返回值操作 )
- 从“没有免费的午餐”理论看机器学习模型
- HTTP协议之http状态码详解
- c++不是类型安全的语言
- [JZOJ5866]【NOIP2018模拟9.13】指引
- 7-4 吃货的最短路径 (10 分)
- 深度学习在医疗方面的应用 精准医学受追捧
- 【基础概念大总结】— 网络安全 Java 基础知识大汇总
- php文章列表源码,抓取文章列表
- 终极算法——第五章:进化学派:自然的学习算法
- H5 微信分享显示标题和图标
- VMWare + qnx系统开启ssh服务,并使用SecureCRT通过ssh远程连接qnx系统
- 基于Ant在NetBeans 11.0中创建并使用第三方库(jar包)
- python股票量化交易(13)---使用pyqt5构建股票交易K线形态
- 用户、角色、权限数据库设计
- Gitee码云注册和提交代码
- 从互联网+角度看云计算的现状与未来(2)