高度扫描​​碎片但低逻辑扫描碎片

High extent scan fragmentation but low Logical Scan Fragmentation

我还是SQL服务器的新手,当我在table上运行 DBCC SHOWCONTIG时,它显示逻辑扫描碎片不大但扩展扫描碎片很大,这让我有点困惑。

    DBCC SHOWCONTIG scanning 'User' table...
    Table: 'User' (462624691); index ID: 1, database ID: 6
    TABLE level scan performed.
    - Pages Scanned................................: 2638
    - Extents Scanned..............................: 335
    - Extent Switches..............................: 578
    - Avg. Pages per Extent........................: 7.9
    - Scan Density [Best Count:Actual Count].......: 56.99% [330:579]
    - Logical Scan Fragmentation ..................: 12.93%
    - Extent Scan Fragmentation ...................: 94.03%
    - Avg. Bytes Free per Page.....................: 805.1
    - Avg. Page Density (full).....................: 90.05%
    DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Manual on MSDN来看,一个是页面上的碎片,一个是范围上的碎片。还有其他区别吗?逻辑扫描碎片率低而扩展扫描碎片率高的情况如何?

另外说到"External fragmentation",更多的是和结果中的"Logical Scan Fragmentation"或者SHOWCONTIG?

的结果中的"Extent Scan Fragmentation"相关

非常感谢任何答案。

我假设您对测量碎片感兴趣,因为您想要优化顺序扫描速度。

据我所知,所有关于范围的数字都是毫无意义的。页面级指标对顺序扫描速度很重要,因为性能取决于页面的读取方式。

这里有趣的数字是“Logical Scan Fragmentation”,因为这是最有可能需要磁盘查找以到达下一页的页面的百分比。 13%表示物理读取位置大约每6页变化一次。

How can Logical Scan Fragmentation is low while Extent Scan Fragmentation remains high?

如果存在 100% 的盘区碎片,每个盘区仍然可以有 8 个连续的页面,因此逻辑碎片可以低至 12.5%。

可能你不应该使用 SHOWCONTIG 而应该使用碎片 DMV。