0

我有一个困惑。如果我将填充因子设置为 50%,那么 sql 引擎将留出一半空间以供将来增长,因此数据将存储在最多 4KB(大约)的日期页面中,因为页面最大大小为 8KB。填充因子也仅适用于重建索引。请清除我对上述情况的怀疑。任何帮助,将不胜感激。

谢谢

4

1 回答 1

1

DBA 和开发人员经常读到降低填充因子可以通过减少页面拆分来提高性能。也许他们正在尝试解决性能问题,或者他们感到偏执。它们要么在某些索引上降低填充因子太多,要么对所有索引应用填充因子更改。

这是独家新闻:确实,100% 的默认填充因子并不总是好的。如果我将页面填满,然后返回并需要在该页面上插入一行,它将不适合。为了使数据适合并保留索引的逻辑结构,SQL Server 将不得不做一些复杂的事情(一种“坏”类型的页面拆分),包括:

1)添加一个新页面。

2)将大约一半的数据移动到新页面。

3)标记在旧页面上移动的数据,使其不再有效。

4)更新现有页面上的页面链接指针以指向新页面 是的,这是很多工作。

它会生成日志记录并导致额外的 IO。是的,如果您经常发生这种情况,您可能希望稍微降低该索引中的填充因子以帮助减少这种情况的发生。

设置填充因子的最佳实践

这里有一些关于如何安全设置填充因子的简单建议:

1)不要为填充因子设置系统范围的值。这不太可能对你的表现有所帮助而不是伤害。

2)获得一个良好的索引维护解决方案,检查索引碎片并且只对碎片相当严重的索引起作用。将解决方案记录到表中。查找经常碎片化的索引。考虑使用计划更改来重建索引逐渐降低这些单个索引的填充因子。当您第一次降低填充因子时,请考虑仅达到 95 并在再次运行维护一两个星期后重新评估该指数。(根据您的 SQL Server 版本和版本,重建可能需要离线完成。Reorganize 不能用于设置新的填充因子。)

第二个选项可能听起来很挑剔,但在大多数环境中,只需几分钟即可确定您需要在哪里进行更改。你可以每月做一次。这是值得的——因为没有人希望他们的数据库性能变慢,并意识到他们通过在内存中不必要地留出许多千兆字节的空间而导致了额外的 IO。

于 2013-09-23T18:21:00.210 回答