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% に急上昇する可能性があります。 複数の論理プロセッサがある場合、プロセッサの使用率は 1 つだけがすぐに 100% に上昇する可能性があります。

原因

この問題は、クエリの実行で大きなインデックスが使用された場合、メモリ内 OLTP のガベージ コレクションが完了するまでに長い時間がかかる可能性があるために発生します。

解決策

この問題は、次の SQL Server の累積的な更新プログラムで修正されています。

SQL Server 2017 の累積的な更新プログラム CU 38

SQL Server 2016 SP1 の累積的な更新プログラム 7

SQL Server 2014 SP3 の累積的な更新プログラム 2

注釈 この更新プログラムをインストールした後、この問題を修正するためにトレース フラグ (TF) 9945 を有効にする必要があります。  TF 9945 を有効にするには、Microsoft Developer Network (MSDN) の「Trace Flags (Transact-SQL)」トピックを参照してください。

SQL Server の累積的な更新プログラムについて:

SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。

SQL Server 2017 の最新の累積的な更新プログラム

SQL Server 2016 の最新の累積的な更新プログラム

SQL Server 2014 の最新の累積的な更新プログラム

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

参考資料

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