Sql server 2005需要每日索引碎片整理

时间:2009-11-10 09:46:48

标签: sql-server indexing fragmentation

我们的生产数据库需要在其中一个表上进行每日索引碎片整理。该表有几个索引,其中一个每天会有90%的碎片。

索引位于两个日期字段(开始时间和结束时间)。

我们的开发数据库没有遇到这个问题,尽管这显然有很低的吞吐量。

每天晚上我们都会安排维护任务进行碎片整理,但有时需要在办公时间内运行。

该表目前有250,000条记录,每天增加约500至3000条记录。

关于为什么它如此迅速地分裂的任何想法?

3 个答案:

答案 0 :(得分:3)

您可以更改索引的填充因子以减少碎片。

默认填充因子值为0,基本上将其视为100%的填充因子,即没有为插入新索引记录保留额外空间。如果您只在索引末尾添加索引记录(如标识字段),这是理想的,但如果您在中间插入记录则不行。

例如,您可以将填充因子设置为80%,这将在每个索引页面中保留20%的可用空间,以插入新的索引记录。

答案 1 :(得分:1)

思想:

  • 重建索引时,是重新组织还是重建?重建优于25%以上的碎片

  • 如果使用DMO / sqlmaint,则必须说“10”表示填充因子为90

  • 您实际是对所有索引进行碎片整理吗? 例如ALTER INDEX ALL ON Mytable ...

  • 除非您要在90%以上的行中更新这些列,否则无法使用该级别的写入获得90%的碎片...

答案 2 :(得分:0)

新行的数量不应该能够产生这种级别的碎片,但实际上需要更多信息而不仅仅是猜测,主要是表的聚集索引是什么。

还会检查你是否有一个reindex,然后在你的维护或auto_shrink设置中收缩,因为这很容易造成高水平的碎片。