SQL Server 跟踪各种内部位图中的页面分配。其中包括全局分配图 (GAM) 和页面可用空间 (PFS) 页。我们知道 GAM 页面以511232 页的设定间隔出现,PFS 页面以 8088 页的设定间隔出现。
给定一个足够大的数据文件,这种重复最终将导致一页成为 GAM 和 PFS 的下一行。计算一下,这发生在页码 516,855,552 处的 1,011 个 GAM 或 63,904 个 PFS 页之后。这相当于一个不到 4TB 的操作系统文件。由于单个数据文件的最大大小为 16TB(来源),这是允许的。
我的问题:当单个数据文件达到 4TB 时,哪种页面类型是页面 516855552 - GAM 还是 PFS?另一个去哪儿了?Paul Randal 的这条评论表明它被分流到 GAM 范围内其他未使用的页面之一:
除了第一个之外的 GAM extents 有 GAM, SGAM, DIFF_MAP, ML_MAP。每 4TB GAM extent 也将有一个 PFS 页面。
我发现这里引用了这个但没有明确解释:
-- There may be an issue with the ML map page position -- on the four extents where PFS pages and GAM pages live -- (at page IDs 516855552, 1033711104, 1550566656, 2067422208) -- but I think we'll be ok.
在谷歌上没有其他有意义的结果显示给我。
我有权访问的数据库有多个文件,因此没有一个符合大小要求。
在新创建的 SQL Server 2022 数据库上,下面的脚本显示页面 516855552 是一个 PFS 页面,516855553 是一个 GAM 页面。