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累积更新中已修复:

2017 SQL Server累积更新 4

SQL Server 2016 SP1 累积更新 7

SQL Server 2014 SP3 的累积更新 2

注意 安装此更新后,必须启用跟踪标志 (TF) 9945 才能解决此问题。 若要启用 TF 9945,请参阅 Microsoft 开发人员网络 (MSDN ) 上的 Trace Flags (Transact-SQL ) 主题。

关于SQL Server的累积更新:

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

SQL Server 2017 的最新累计更新

SQL Server 2016 年的最新累积更新

SQL Server 2014 年的最新累积更新

地位

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

参考资料

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