DBCC SHOWCONTIG scanning 'BoxLog' table...
Table: 'BoxLog' (2089058478); index ID: 0, database ID: 9
TABLE level scan performed.
- Pages Scanned................................: 1803351
- Extents Scanned..............................: 225454
- Extent Switches..............................: 225453
- Avg. Pages per Extent........................: 8.0
- Scan Density [Best Count:Actual Count].......: 99.98% [225419:225454]
- Extent Scan Fragmentation ...................: 7.83%
- Avg. Bytes Free per Page.....................: 40.1
- Avg. Page Density (full).....................: 99.50%以上是我用dbcc showcontig命令检查出来的结果
上面写的都是什么意思?是否需要重建索引呢?
Table: 'BoxLog' (2089058478); index ID: 0, database ID: 9
TABLE level scan performed.
- Pages Scanned................................: 1803351
- Extents Scanned..............................: 225454
- Extent Switches..............................: 225453
- Avg. Pages per Extent........................: 8.0
- Scan Density [Best Count:Actual Count].......: 99.98% [225419:225454]
- Extent Scan Fragmentation ...................: 7.83%
- Avg. Bytes Free per Page.....................: 40.1
- Avg. Page Density (full).....................: 99.50%以上是我用dbcc showcontig命令检查出来的结果
上面写的都是什么意思?是否需要重建索引呢?
解决方案 »
- visual studio 2008连接sql2005后,程序运行,出现错误
- 帮忙改造一个sql语句
- 请问 查询是如何根据是否为空返回true false?
- 程序没有执行,在线等。非常急,谢了
- 如何把SQL SERVER2000的数据库表结构导出后再导入到另外一台电脑上呢???
- 在sql_server查询分析器中,通过代码自动生成数据库结构及在存储过程的问题?
- 各为大侠请问如何在Access数据库中建立存储过程?如何调用?
- 由于数据库日志文件太大,数据库还原时提示“磁盘空间不足”,可否在还原时将日志文件清空
- MS专家请进:行锁定问题
- 在存储过程中怎么解决表名不能为变量的问题?
- 关联查询这个怎末查?
- SQL 2005 nvarchar(MAX)为什么只能支持8192个字符
扫描扩展盘区数 表或索引中的扩展盘区数。
扩展盘区开关数 遍历索引或表的页时,DBCC 语句从一个扩展盘区移动到其它扩展盘区的次数。
平均扩展盘区上的平均页数 页链中每个扩展盘区的页数。
扫描密度
[最佳值:实际值] 最佳值是指在一切都连续地链接的情况下,扩展盘区更改的理想数目。实际值是指扩展盘区更改的实际次数。如果一切都连续,则扫描密度数为 100;如果小于 100,则存在碎片。扫描密度为百分比值。
逻辑扫描碎片 对索引的叶级页扫描所返回的无序页的百分比。该数与堆集和文本索引无关。无序页是指在 IAM 中所指示的下一页不同于由叶级页中的下一页指针所指向的页。
扩展盘区扫描碎片 无序扩展盘区在扫描索引叶级页中所占的百分比。该数与堆集无关。无序扩展盘区是指:含有索引的当前页的扩展盘区不是物理上的含有索引的前一页的扩展盘区后的下一个扩展盘区。
平均每页上的平均可用字节数 所扫描的页上的平均可用字节数。数字越大,页的填满程度越低。数字越小越好。该数还受行大小影响:行大小越大,数字就越大。
平均页密度(完整) 平均页密度(为百分比)。该值考虑行大小,所以它是页的填满程度的更准确表示。百分比越大越好。
DBCC SHOWCONTIG 不显示行溢出存储信息和其他新的行外数据类型,如 nvarchar(max)、varchar(max)、varbinary(max) 和 xml。
SQL Server 2005 中的所有新功能完全由 sys.dm_db_index_physical_stats 动态管理视图支持。 如果指定了 index_id,则 DBCC SHOWCONTIG 语句将遍历指定索引的叶级上的页链。如果只指定 table_id,或者 index_id 为 0,则将扫描指定表的数据页。此操作通常需要一个阻止更新和插入的共享 (S) 表锁。使用 WITH FAST 选项可避免此行为。此选项只需要一个意向共享 (IS) 表锁。通过这种方式,除了需要排他 (X) 表锁的更新和插入以外,可执行所有更新和插入。这就可以根据返回的统计信息数量,实现执行速度与不减少并发之间进行权衡。但是,如果使用此命令只是为了测量碎片信息,则建议您使用 WITH FAST 选项。请注意,减少的 WITH FAST 选项的锁定要求不适用于堆。表碎片
DBCC SHOWCONTIG 可确定表是否高度碎片化。在对表进行数据修改(INSERT、UPDATE 和 DELETE 语句)的过程中会出现表碎片现象。由于这些修改通常并不在表的行中平均分布,所以每页的填满状态会随时间而改变。对于扫描部分或全部表的查询,这样的表碎片会导致读取额外的页。从而延缓了数据的并行扫描。如果索引的碎片非常多,可选择以下方法来减少碎片: 删除然后重新创建聚集索引。 重新创建聚集索引将重新组织数据,从而使数据页填满。填满程度可以使用 CREATE INDEX 中的 FILLFACTOR 选项进行配置。这种方法的缺点是索引在删除/重新创建周期内为脱机状态,并且该操作是一个整体,不可中断。如果中断索引创建,则不能重新创建索引。
对索引的叶级页按逻辑顺序重新排序。使用 ALTER INDEX…REORGANIZE,对索引的页级页按逻辑顺序重新排序。由于此操作是联机操作,因此语句运行时索引可用。此外,中断该操作不会丢失已完成的工作。这种方法的缺点是在重新组织数据方面没有聚集索引的删除/重新创建操作有效。
联机重新生成索引。使用 REBUILD 和 ALTER INDEX 联机重新生成索引。有关详细信息,请参阅 ALTER INDEX (Transact-SQL)。
“页中平均字节数”和“页的的平均密度”统计信息指示了索引页的填满程度。“页中平均可用字节数”应该较小,“页的平均密度”数应该较大。使用指定的 FILLFACTOR 选项删除并重建索引可改善统计信息。另外,REORGANIZE 和 ALTER INDEX 可根据其 FILLFACTOR 选项压缩索引,从而改善统计信息。注意:
如果索引有很多随机插入和很满的页,则其页拆分数将增加。这将导致更多的碎片。
索引的碎片级别可通过以下方式确定: 比较“区切换次数”和“扫描区数”的值。 “区切换次数”的值应尽可能接近于“扫描区数”的值。此比率将作为“扫描密度”值计算。此值应尽可能的大,可通过减少索引碎片得到改善。注意:
如果索引涉及多个文件,则此方法无效。
了解“逻辑扫描碎片”和“区扫描碎片”的值。“逻辑扫描碎片”和“区扫描碎片”(对于较小的区)的值是表的碎片级别的最好指标。这两个值应尽可能接近零,但 0% 到 10% 的值都是可接受的。 注意:
如果索引涉及多个文件,则“区扫描碎片”的值将较高。若要减小这些值,必须减少索引碎片。
参数
'table_name' | table_id | 'view_name' | view_id
要检查碎片信息的表或视图。如果未指定,则检查当前数据库中的所有表和索引视图。若要获得表或视图 ID,请使用 OBJECT_ID 函数。'index_name' | index_id
要检查其碎片信息的索引。如果未指定,则该语句将处理指定表或视图的基本索引。若要获取索引 ID,请使用 sys.indexes 目录视图。WITH
指定有关 DBCC 语句返回的信息类型的选项。FAST
指定是否要对索引执行快速扫描和输出最少信息。快速扫描不读取索引的叶级或数据级页。ALL_INDEXES
显示指定表和视图的所有索引的结果,即使指定了特定索引也是如此。TABLERESULTS
将结果显示为含附加信息的行集。ALL_LEVELS
仅为保持向后兼容性而保留。即使指定了 ALL_LEVELS,也只对索引叶级或表数据级进行处理。NO_INFOMSGS
取消严重级别从 0 到 10 的所有信息性消息。结果集
下表对结果集中的信息进行了说明。统计信息 说明
扫描页数
表或索引中的页数。
扫描区数
表或索引中的区数。
区切换次数
遍历表或索引的页时,DBCC 语句从一个区移动到另一个区的次数。
每个区的平均页数
页链中每个区的页数。
扫描密度 [最佳计数:实际计数]
百分比。这是“最佳计数”与“实际计数”的比率。如果所有内容都是连续的,则该值为 100;如果该值小于 100,则存在一些碎片。“最佳计数”是指在一切都连续链接的情况下,区更改的理想数目。“实际计数”是指区更改的实际次数。
逻辑扫描碎片
扫描索引的叶级页时返回的出错页的百分比。此数与堆无关。对于出错页,在 IAM 中所指示的下一页与叶级页中下一页指针所指向的页不同。
区扫描碎片
扫描索引的叶级页时出错区所占的百分比。此数与堆无关。对于出错区,包含当前索引页的区在物理上不是包含上一个索引页的区的下一个区。 注意:
如果索引跨越多个文件,则此数字无意义。
页中平均可用字节数
扫描的页上平均可用字节数。此数字越大,则页的填充程度越低。如果索引不会有很多随机插入,则数字越小越好。此数字还受行大小影响:行越大,此数字就越大。
页的平均密度(全部)
页的平均密度,以百分比表示。该值会考虑行大小。因此,该值可以更准确地指示页的填充程度。百分比越大越好。
如果指定了 table_id 和 FAST,则 DBCC SHOWCONTIG 将返回只包含以下列的结果集。 扫描页数
区切换次数
扫描密度 [最佳计数:实际计数]
区扫描碎片
逻辑扫描碎片
如果指定了 TABLERESULTS,则 DBCC SHOWCONTIG 将返回以下列以及上一个表中说明的九个列。