【发布时间】:2009-08-13 20:05:14
【问题描述】:
我有一个在 SQL Server 2005 上运行的大型数据库。我查询 DMV sys.dm_db_index_physical_stats 以获取索引碎片信息。
看到 avg_fragment_size_in_percent 报告大量具有非常糟糕的碎片级别的索引(其中很多索引为 99%),我感到很震惊。这些是在具有重要页数的表上(最小的页数超过 500 页)。
我对最严重的违规者进行了以下操作:
ALTER INDEX ALL ON myTable REBUILD WITH(ONLINE = ON)
然后我重新查询了 sys.dm_db_index_physical_stats,但是它报告了索引 REBUILD 前后完全相同的碎片级别。
这些信息是被缓存了,还是我做错了什么?
【问题讨论】:
-
您能告诉我们该索引的索引定义是什么吗?包括哪些字段(它们的数据类型是什么)?
-
当然……我目前最严重的违规者之一是恰好是外键的唯一标识符索引(单列索引)。这个显示 99.5991983967936% 的平均碎片。
-
嗯...我在 MSDN 上发现这篇文章报告了相同的行为:social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/…
-
我也有这个问题。我做了一个测试并重建了一个索引,然后检查了碎片,它说它是 100% 碎片的。然后我使用 SQL Management Studio 进行检查,它告诉我它有 0.29% 的碎片。数据必须缓存,但如何强制它更新统计信息?
标签: sql sql-server sql-server-2005