KB4057280 - 修正: メモリ最適化テーブルのクエリで大きなインデックスが使用されている場合の CPU 使用率が高いSQL Server

適用先
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 製品の問題であることを確認しました。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。