空数据库上的FILLFACTOR

时间:2016-04-27 02:36:54

标签: sql-server tsql database-performance

我有一个系统,用数百万条记录填充空数据库。

数据库有各种类型的索引,我担心的是:

  1. 外键指数。这些是非群集的,不一定按顺序插入。
  2. BINARY(32)字段的索引。这些是内容哈希,根本没有订购。基本上,这些就像GUIDS而不是顺序。
  3. 因此,当数据被大量插入时,这些指数存在显着的碎片。

    问题1 :如果我在创建数据库时将FILLFACTOR = 75设置为这些索引,那么在插入数据时它是否会产生任何影响?在之前数据创建之后,似乎FILLFACTOR的效果。或者是否会使用原始fillfactor设置分配新的索引页面?

    问题2 :我可以使用哪些其他推荐策略来确保这些指数达到最佳效果?

2 个答案:

答案 0 :(得分:1)

<强>问题1:
填充因子仅在重建索引时使用,SQL在尝试插入时不会尝试根据填充因子存储页面。

<强>问题2:
这取决于你所说的最优。在一个最小的你可以检查你的索引是否有用,你的查询是否使用你的索引。有很多关于索引的最佳实践,如选择性第一键,小键..

从Kimberly Tripp和DBA.SE

中搜索索引的任何内容都很有用

<强>参考文献:
http://www.sqlskills.com/blogs/paul/a-sql-server-dba-myth-a-day-2530-fill-factor/ http://www.sqlskills.com/blogs/kimberly/category/indexes/

答案 1 :(得分:0)

检查索引碎片以及写入/读取比率。如果写入/读取比率非常高并且您看到碎片,则可以尝试在索引重建操作期间添加fillfactor。

填充因子的数量实际上取决于您所看到的碎片。如果您看到0-20%的碎片(这些碎片发生在一段时间内),您可能不需要任何填充因子。如果您看到20-40%的碎片,您可以尝试90%。

最后获得一个很好的索引维护计划。 Ola Hallengren's index script很棒。 注意:以上建议只是建议 - 您的