Ale*_*eix 9 sql-server storage-engine database-internals
我正在阅读 Itzik 的书“查询 Microsoft SQL Server 2012”以及在互联网上阅读/观看不同的教育材料。我的目的是对数据库内部的工作方式有一个有用的理解。
我有点怀疑我无法解决 IAM 页面。由于我处于我理解的早期阶段,我可能需要那些对它有更好了解的人的额外帮助,所以如果我的怀疑看起来很荒谬,请原谅我。
在第 15 章“实施索引和统计”中出现了一个图像 - 如下所示 - 作为 IAM 页面的示例:

您可以通过红色箭头看到与相同程度相关的 16 页。这怎么可能?这是作者/编辑的错误吗?或者更有可能的是:有什么我没有正确理解的吗?
我的另一个问题与页面间隔有关。为什么它们不相邻?以最后一个extent为例,它将覆盖id为336到22642的页面,或者前一个,296到328的页面。
您可以通过红色箭头看到与相同程度相关的 16 页。这怎么可能?
红色箭头指向一个条目,该条目显示从 GAM 间隔内的当前实体开始1:176并1:184分配给当前实体(两个 8 页统一范围都在使用中)的条目。
我的另一个问题与页面间隔有关。为什么它们不相邻?以最后一个extent为例,它将覆盖id为336到22642的页面,或者前一个,296到328的页面。
它们不是范围,而是在当前 IAM 页面涵盖的 4GB GAM 间隔内分配给当前实体(例如表、索引)的范围范围。
显示的范围范围NOT ALLOCATED可能被其他实体使用。
有关更多信息,请参阅Paul Randal 撰写的存储引擎内部:IAM 页面、IAM 链和分配单元。