KB3191487-SQL server 2014 および2016の一部の列ストアクエリで SQL Server の安定性と同時クエリの実行が改善されました

現象

次のような状況で問題が発生します。

  • クラスター化された列ストアインデックスを含むテーブルがあり、テーブルに多くの列 (数百) が含まれています。

  • これらの列のデータ (データ型) は、 varcharなどの高度に圧縮されたデータです。

  • このテーブルに対して select ステートメントを実行して、このテーブルの大きなサブセットまたはすべての列を選択します。

  • Selectステートメントには、その出力をごく少数の行に制限するwhere句があります (クエリは、選択度が高くなります)。

このシナリオでは、次のいずれかまたはすべての現象が発生する可能性があります。

  • 同時作業負荷 (このクエリとしてサーバー上で同時に実行される他のクエリ) では、パフォーマンスが低下したり、スループットが失われることがあります。

  • 断続的な CPU 使用率が断続的に表示されることがあります。

  • スケジューラモニター型のエントリをクエリsys.dm_os_ring_buffersして表示すると、このクエリの実行時にログに記録された "非生成スケジューラ" メッセージが断続的に見つかります。

  • エラーログに、待機中ではないスケジューラエラーが表示され、メモリダンプファイルが生成されることがあります。

解決方法

この問題は、SQL Server の次の累積的な更新プログラムで最初に修正されました。

SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムをダウンロードしてインストールすることをお勧めします。

詳細情報

詳細の修正列セグメントを処理する (展開して修飾している行をスキャンする) ときに、特定のしきい値数の行が出力されたときに、他のワーカー/同時クエリの実行に対する CPU 使用率を "譲る" ために使用されます。 WHERE句が少数の行を作成するために高い選択度になった場合、このクエリを処理するワーカーは、他のユーザーが共同作業を処理するために協力して CPU を処理する前に、圧縮されていない多くのセグメント (行数が多いため) を処理します。 これにより、同時作業負荷の CPU 使用量とスループットの低下が断続的になります。 修正プログラムによって、このような列ストアクエリの CPU 共有アルゴリズムが最適化され、改善されます。

参照情報

ソフトウェアの更新を説明するために Microsoft が使用する 用語 について説明します。

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

フィードバックをお送りいただきありがとうございます!

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×