現象
次のような状況で問題が発生します。
-
NUMA が有効になっている Microsoft SQL Server 2012 または SQL Server 2014 のインスタンスを使用している。
-
SQL Server は、複数の NUMA ノードで多くの CPU コアを使用するように構成されています (たとえば、それぞれ12コアを持つ4つの NUMA ノード)。
-
複数の同時接続から高いコンパイル率を生成するコンパイル負荷の高いワークロードを実行します。
このシナリオでは、使用可能なコア数が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 システムのコンパイル速度を下げます。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。