KB4099472 - SQL Server 2014、2016 和 2017 中的 PFS 页面循环调度算法改进

应用对象
SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows SQL Server 2017 Developer on Windows SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

症状

请考虑以下情形:

  • 你有一个大量使用 tempdb 数据库的应用程序,或者你有一个特定的 tempdb 数据库工作负载。
  • 升级到 Microsoft SQL Server 2016 或更高版本,并开始看到 PFS 页面争用。
  • 遵循 tempdb 数据库 最佳做法 并添加多个数据文件。

在这种情况下,严重的 PFS 页面争用仍在继续,并影响系统性能。

备注 如果页面的映射很容易被 8088 整除,则它是 PFS 页面。 例如,第 2:3:905856 页是 tempdb 中 file_id=3 中的 PFS。

解决方法

累积更新信息

此问题已在 SQL Server 的以下累积更新中修复:

SQL Server 2017 累积更新 7

SQL Server 2016 SP2 累积更新 1

SQL Server 2016 SP1 累积更新 9

关于 SQL Server 的累积更新:

SQL Server 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

SQL Server 2017 的最新累计更新

SQL Server 2016 的最新累计更新

此问题已在以下文章中介绍的修补程序中修复:

4099490 SQL Server 2016 SP1 的按需修补程序更新包

此修补程序通过跨同一数据文件中的多个 PFS 页执行循环分配以及跨所有 tempdb 数据文件的循环分配来改进 PFS 页分配。 因此,数据文件中包含的 PFS 数据页越多,数据文件越多,分配分布就越好。

备注 由于数据现在分布在 tempdb 数据库文件中的 PFS 间隔中,因此 数据库收缩 等操作将变得更加占用资源。 但是,通常不建议在典型操作过程中收缩 tempdb。

SQL Server 的 Service Pack 信息:

此更新已在以下 SQL Server 服务包中修复:

适用于 SQL Server 2014 的 Service Pack 3

关于 SQL Server 的 Service Pack:

Service Pack 具有累积性。 每个新 Service Pack 除了包含所有新修复程序外,还包含以前 Service Pack 中的所有修复程序。 建议应用最新的 Service Pack 和该 Service Pack 的最新累积更新。 在安装最新的 Service Pack 之前,不需要安装以前的 Service Pack。 使用以下文章中的表 1 查找有关最新 Service Pack 和最新累积更新的详细信息。

如何确定 SQL Server 及其组件的版本、版本类别和更新级别

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

减少 SQL Server tempdb 数据库中分配争用的建议