虽然索引重建至少需要与当前索引索引相同的数据文件空间量(因为将创建索引的副本)
我对与重组相关的 SQL Server BOL 的阅读只涉及叶级,并且只需要一个 8KB 的页面,
任何人都可以用简单的技术术语解释重组是如何工作的(内部机制)..?
这是SQL Server 2008 内部手册中相关部分的概要。
SQL Server 首先获取IX索引(或索引分区)上的锁。
然后,重组(假设LOB_COMPACTION选项不是OFF)通过将页面从低密度统一扩展区(小于 75%/6 个页面已满)移到其他具有可用空间的统一扩展区来压缩属于索引的任何 LOB 页。
然后它移动到索引的叶页上。
书中的简化描述是,它首先确定了第一个逻辑页和第一个物理页。如果不同,它将X锁定两个页面并使用一个额外的新页面作为临时存储区域来交换它们。然后它对第二个物理/逻辑对执行相同的操作,依此类推。
然而,它比那要复杂一些。书中提到它还会查看一个逻辑上连续的八个页面的滑动窗口,并确定是否可以在这些页面之间移动行以允许清空和删除单个页面(同时考虑索引填充因子)。
由于重新组织不会为索引分配新页面,因此如果页面比所需的更满,则无法重新应用填充因子。此外,不会对混合区中的页面进行碎片整理。