1

我还是 SQL Server 的新手,当我在表上运行 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.

MSDN 上的手册中可以看出,一个是关于页面碎片的,另一个是关于范围的。还有其他区别吗?逻辑扫描碎片率低,而扩展扫描碎片率仍然很高?

另外,当我们谈论“外部碎片”时,更多的是与结果中的“逻辑扫描碎片”或SHOWCONTIG结果中的“扩展扫描碎片”有关?

非常感谢任何答案。

4

1 回答 1

2

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

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

这里有趣的数字是“逻辑扫描碎片”,因为这是最有可能需要磁盘搜索才能到达下一页的页面百分比。13% 意味着每 6 页大约有一次物理读取位置发生变化。

逻辑扫描碎片率低,而扩展扫描碎片率仍然很高?

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

可能您不应该使用SHOWCONTIG但使用碎片 DMV。

于 2015-04-09T21:40:09.710 回答