1

我正在使用 SQL Server 2012,从几天开始我注意到一些索引的碎片增长非常迅速。我已经阅读了不同的文章并应用了填充因子。

首先,我将填充因子更改为 95 并重建,一天后碎片约为 50%。所以我将填充因子降低到 90,然后降低到 80,但一天后碎片再次达到 50%。

我需要一些帮助来找出碎片越来越多的原因以及解决它的解决方案。

仅供参考,我在索引级别应用填充因子,只有 4-5 个索引有这个问题我已经将填充因子应用于其他索引,它们工作正常。

提前致谢。

4

1 回答 1

2

有很多事情会导致索引碎片......其中一些在下面

1.Insert和Update操作导致Page splits
2.Delete操作
3.Initial allocation of pages from mixed extents
4.Large row size

SQL Server 仅在您创建、重建或重组索引时使用填充因子,因此即使您指定填充因子为 70,您仍然可能会出现页面拆分......并且进一步的索引碎片是“预期的”和“不可避免的”任何 OLTP 环境的特征。

因此,通过您的填充因子设置,sql server 在重建索引时会留下一些空间,这仅在第一种情况下有帮助,这也取决于您的工作量

所以我建议不要太担心碎片,除非你的工作量做了很多范围扫描。下面是一些可以帮助你的链接

此外,您可以使用 Perfmon 计数器/扩展事件和使用事务日志的 lso 跟踪 Pagesplits/deletes,这是导致碎片的一些原因

https://dba.stackexchange.com/questions/115943/index-fragmentation-am-i-interpreting-the-results-correctly

https://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/

参考资料:
Notes - SQL Server 索引碎片、类型和解决方案

于 2017-07-15T13:42:37.637 回答