SQL2008如何管理对象使用的空间

news/2024/7/5 20:00:50 标签: 数据库

管理对象使用的空间

 

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

  • IN_ROW_DATA

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

  • LOB_DATA

    用于存储大型对象 (LOB) 数据类型,例如 xml、varbinary(max) 和 varchar(max)。

  • ROW_OVERFLOW_DATA

    用于存储超过 8,060 字节行大小限制的 varchar、nvarchar、varbinary 或 sql_variant 列中存储的可变长度数据。

堆或索引的每个分区至少包含一个 IN_ROW_DATA 分配单元。根据堆或索引的架构,可能还包含一个 LOB_DATA 或 ROW_OVERFLOW_DATA 分配单元。有关分配单元的详细信息,请参阅表组织和索引组织。

一个 IAM 页在文件中的范围为 4 GB,与 GAM 或 SGAM 页的范围相同。如果分配单元包含来自多个文件的区,或者超过一个文件的 4 GB 范围,那么一个 IAM 链中将链接多个 IAM 页。因此,每个分配单元在有区的每个文件中至少有一个 IAM 页。如果分配给分配单元的文件中的区的范围超过了一个 IAM 页能够记录的范围,一个文件中也可能会有多个 IAM 页。

管理区的索引分配映射 (IAM) 页

IAM 页根据需要分配给每个分配单元,在文件中的位置也是随机的。系统视图 (sys.system_internals_allocation_units) 指向分配单元的第一个 IAM 页。该分配单元的所有 IAM 页都链接到一个链中。

重要说明重要提示

sys.system_internals_allocation_units 系统视图仅供内部使用,随时可能更改。不保证兼容性。

每个分配单元的链中所链接的 IAM 页

IAM 页有一个标头,指明 IAM 页所映射的区范围的起始区。IAM 页中还有一个大位图,其中每个位代表一个区。位图中的第一个位代表范围内的第一个区,第二个位代表第二个区,依此类推。如果某个位是 0,它所代表的区将不会分配给拥有该 IAM 页的分配单元。如果这个位是 1,它所代表的区将被分配给拥有该 IAM 页的分配单元。

当 SQL Server 数据库引擎必须在当前页中插入新行,而当前页中没有可用空间时,它将使用 IAM 和 PFS 页查找要将该行分配到的页,或者(对于堆或 Text/Image 页)查找具有足够空间容纳该行的页。数据库引擎使用 IAM 页查找分配给分配单元的区。对于每个区,数据库引擎将搜索 PFS 页,以查看是否有可用的页。每个 IAM 和 PFS 页覆盖大量数据页,因此一个数据库内只有很少的 IAM 和 PFS 页。这意味着 IAM 和 PFS 页通常位于内存中的 SQL Server 缓冲池中,所以能够很快找到它们。对于索引,新行的插入点由索引键设置。在这种情况下,不会出现上述搜索过程。

仅当 数据库引擎不能在现有的区中快速找到足以容纳插入行的页时,才将新区分配给分配单元。数据库引擎使用比例分配算法从文件组的可用区中分配区。如果文件组内有两个文件,而一个文件的可用空间是另一个文件的两倍,那么每从后一个文件分配一页,就从前一个文件分配两页。这意味着文件组内的每个文件应该有近似的空间使用百分比。


http://www.niftyadmin.cn/n/1781119.html

相关文章

使用lrucache和diskLrucache实现照片墙

其实,在真正的项目实战当中如果仅仅是使用硬盘缓存的话,程序是有明显短板的。而如果只使用内存缓存的话,程序当然也会有很大的缺陷。因此,一个优秀的程序必然会将内存缓存和硬盘缓存结合到一起使用,那么本篇文章我们就…

21年技术建设复盘

1 前言做一下21年技术复盘,也许有不一样的收获。整个一年,在技术上投入相对更大一些,从小的优化方案到具体系统设计,都有一些投入。那些达到目标,并且比较细小的技术实现,这里就不回顾了,我想复…

static 还是readonly 还是static readonly

一、 static 多对象共享一段空间,或者说没有对象概念,就是类的概念,不需要实例化,自动被创建。多用于长期共享。不会为对象的创建或销毁而消失。 public class C{static A a new A("C 创建A",1111)public A Ci{get{…

PB导出数据excel格式dw2xls

PB导出数据excel格式dw2xls 使用DW2XLS控件 语法 uf_save_dw_as_excel ( dw, filename ) 參数 dw A reference to the datawindow object filename A string whose value is the name of the file you want to create. If filename is not on the operating systems search …

一张图看程序媛阿源的2021个人年度流水账

大家好,我是若川。持续组织了5个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。本文来自读者阿源小…

android中The connection to adb is down,问题和解决

2019独角兽企业重金招聘Python工程师标准>>> 自己总结的在android中常会出现的不好解决的问题和方法 (其中第三个方法经过了四天的折磨。。。。。哎) 1.报错: BUILD FAILED D:\workspace\ganji\build.xml:144: The following …

创建安全的基于http的api应用接口

为什么80%的码农都做不了架构师?>>> 要创建安全的基于http的api接口,最重要的是要在服务端的进行请求的认证。那么怎么样才能有效的在服务器进行认证呢?一般情况下是提供两个标识符: Access Key ID :是标记…

500行代码了解缓存客户端驱动原理

原创不易,求分享、求一键三连/缓存一般是用来加速数据访问的效率,在获取数据耗时高的场景下使用缓存可以有效的提高数据获取的效率。比如,先从memcached中获取数据,如果没有则查询mysql中的数据得到结果写入到memcache…