KB4057280 - 修复:在 SQL Server 中的内存优化表上的查询中使用大索引时,出现高 CPU 使用率

应用对象
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 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core 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)

症状

请考虑以下情形:

  • 您在 Microsoft SQL Server 2017、2016 和 2014 中使用内存联机事务处理 (OLTP) 。
  • 对包含较大索引的内存优化表执行查询。

在这种情况下,如果您在查询执行期间使用大索引,则 CPU 使用率可能会很快急剧上升到 100%。 如果你有多个逻辑处理器,可能只有一个处理器的使用率会很快上升到 100%。

原因

出现此问题的原因是,如果在查询执行中使用较大索引,则内存中 OLTP 中的垃圾回收可能需要很长时间才能完成。

解决方法

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

SQL Server 2017 累积更新 4

SQL Server 2016 SP1 累积更新 7

SQL Server 2014 SP3 累积更新 2

备注 安装此更新后,必须启用跟踪标志 (TF) 9945 才能修复此问题。 若要启用 TF 9945,请参阅 Microsoft Developer Network (MSDN) 上的“跟踪 标志 (Transact-SQL) ”主题。

关于 SQL Server 的累积更新:

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

SQL Server 2017 的最新累计更新

SQL Server 2016 的最新累计更新

SQL Server 2014 的最新累计更新

状态

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

参考资料

了解 Microsoft 用于描述软件更新的术语。