我正在使用 SQL Server 2012,从几天开始我注意到一些索引的碎片增长非常迅速。我已经阅读了不同的文章并应用了填充因子。
首先,我将填充因子更改为 95 并重建,一天后碎片约为 50%。所以我将填充因子降低到 90,然后降低到 80,但一天后碎片再次达到 50%。
我需要一些帮助来找出碎片越来越多的原因以及解决它的解决方案。
仅供参考,我在索引级别应用填充因子,只有 4-5 个索引有这个问题我已经将填充因子应用于其他索引,它们工作正常。
提前致谢。
我正在使用 SQL Server 2012,从几天开始我注意到一些索引的碎片增长非常迅速。我已经阅读了不同的文章并应用了填充因子。
首先,我将填充因子更改为 95 并重建,一天后碎片约为 50%。所以我将填充因子降低到 90,然后降低到 80,但一天后碎片再次达到 50%。
我需要一些帮助来找出碎片越来越多的原因以及解决它的解决方案。
仅供参考,我在索引级别应用填充因子,只有 4-5 个索引有这个问题我已经将填充因子应用于其他索引,它们工作正常。
提前致谢。
有很多事情会导致索引碎片......其中一些在下面
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://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/