我们什么时候为DBCC DBREINDEX指定填充因子?

时间:2016-06-02 04:22:38

标签: sql-server indexing dbcc

我检查了谷歌,发现如果填充因子为0则会使用索引页面上的100%空间。否则我们需要指定填充因子。

我向专家提出的问题是:

  1. 我们应该留空以获得最大的指数效率吗?
  2. 我在一些数据库中发现,某些索引提到的填充因子是80,85,90,100。那么,我们何时应该将填充因子指定为80或90?

    从sys.indexes中选择fill_factor,*,其中fill_factor<> 0

1 个答案:

答案 0 :(得分:1)

默认填充因子是100开箱即用(如果尚未更改)。当fillfactor为0时,DBCC DBREINDEX使用为索引指定的最后一个值。

Fillfactor旨在在创建,重建或整理索引时提高索引性能和数据存储。通过设置fillfactor,您可以指定要填充数据的每个页面上的空间百分比,在每个页面上保留可用空间以用于将来的表增长。例如,如果fillfactor为80,则每页的20%保留为空,为新记录提供空间。当该空间用完时,会发生页面拆分。

Microsoft建议我们在大多数情况下使用默认的fillfactor。但是,如果您知道如何使用表,则可以对其进行修改。对于非只读表的fillfactor为100将立即导致INSERT / UPDATE上的页面拆分,因此100仅适用于只读表。具有大量书写的表应该在50%到70%之间。如果它们主要是SELECT而不是INSERTed和UPDATEd,那么所有其他表应该在80和90左右。

你应该阅读页面拆分。另外,建立重建索引的计划。您还需要考虑是否对每个索引进行聚类。例如,可以从计划中排除碎片百分比较低的聚簇索引以节省一些时间。

一些参考文献: