症状
请考虑以下情况:
-
你使用的是启用了 NUMA 的 Microsoft SQL Server 2012 或 SQL Server 2014 实例。
-
SQL Server 配置为在多个 NUMA 节点(例如,每个都有12个内核的4个 NUMA 节点)上使用多个 CPU 内核。
-
你可以运行编译繁重的工作负荷,从而从多个并发连接生成较高的编译速率。
在这种情况下,你不会注意到编译/秒查询的结果中增加了超过12个的可用内核数的任何增长。 此外,CPU 可能显示100% 的利用率。注意 CPU 饱和的严重程度取决于每个 NUMA 节点的内核数以及你的编译速率。
原因
出现此问题的原因是 SQL Server 使用的数据结构可能会在并发编译中导致支持 NUMA 的硬件上的 CPU 争用模式。
解决方案
应用此修补程序后,SQL Server 会将共享结构的使用替换为线程本地数据。在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2012 SP2 的累积更新1 /en-us/help/2976982
SQL Server 2014 的累积更新2 /en-us/help/2967546
SQL Server 2012 SP1 的累积更新10 /en-us/help/2954099
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
解决方法
若要解决此问题,请降低 SQL Server 系统中的编译速率。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。