KB2928300 - 修正:密集的查詢編譯工作負載不會隨著 NUMA 硬體上核心數目的增加而縮放,並導致 SQL Server 中的 CPU 飽和

套用到
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

症狀

請考慮以下案例:

  • 您使用已啟用 NUMA 的 Microsoft SQL Server 2012 或 SQL Server 2014 執行個體。
  • SQL Server設定為跨多個 NUMA 節點使用多個 CPU 核心 (例如,4 個 NUMA 節點,每個節點) 有 12 個核心。
  • 您執行編譯繁重的工作負載,該工作負載會從多個並行連線產生高編譯速率。

在此案例中,您不會注意到編譯/秒查詢的結果隨著可用核心數目增加超過 12 個左右而增加。 此外,CPU 可能會顯示 100% 的使用率。

注意:CPU 飽和度的嚴重性取決於每個 NUMA 節點的核心數目,以及您的編譯速率。

原因

發生此問題的原因是 SQL Server 使用的資料結構,可能會在啟用 NUMA 的硬體上,跨並行編譯造成 CPU 爭用模式。

解決方式

套用此修正程式之後,SQL Server 會以執行緒本機資料取代共用結構的使用。

此問題已先在下列 SQL Server 累積更新中修正。

SQL Server 2012 SP2 的累積更新 1 /zh-tw/help/2976982

2014 年 SQL Server 累積更新 2 /zh-tw/help/2967546

SQL Server 2012 SP1 的累積更新 10 /zh-tw/help/2954099

關於 SQL Server 的累積更新

SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:

      

因應措施

若要解決此問題,請降低 SQL Server 系統中的編譯速率。

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。