現象
Microsoft SQL Server 2014 で複数の大きなクエリを同時に実行しようとすると、一部のクエリがRESOURCE_SEMAPHORE_QUERY_COMPILEを待機することがあります。 サーバーに十分なメモリが利用可能であっても、コンパイルにビッグ ゲートウェイのしきい値 (DBCC MEMORYSTATUS コマンドの出力によって提供される) よりも多くのメモリを必要とするクエリは 1 つだけ続行できます。
注: これは仕様です。 ただし、データ ウェアハウスなどの大規模なバッチ システムでは、多くのクエリの同時実行のパフォーマンスが低下する可能性があります。
解決策
累積的な更新プログラムの情報
この問題は、次の SQL Server の累積的な更新プログラムで最初に修正されました。
推奨事項: SQL Server の最新の累積的な更新プログラムをインストールする
SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムをダウンロードしてインストールすることをお勧めします。
この修正プログラムでは、新しいトレース フラグ -T 6498 が導入されています。 このトレース フラグを使用すると、使用可能なメモリが十分な場合に、複数の大きなクエリ コンパイルが大きなゲートウェイにアクセスできるようになります。 これは SQL Server ターゲット メモリの 80% に基づいており、25 ギガバイト (GB) のメモリあたり 1 つの大きなクエリのコンパイルが可能です。 たとえば、これにより 64 GB のターゲット メモリ コンピューターで 2 つの大規模なクエリのコンパイルが可能になります。
この修正プログラムを適用した後、トレース フラグ -T 6498 を有効にして新しい動作を有効にする必要があります。
注: DBCC TRACEON コマンドを使用してトレース フラグを有効にした場合は、トレース フラグを有効にするためにサーバーを再起動する必要はありません。 ただし、新しい大きなゲートウェイの構成が適用されるまでに 10 秒かかる場合があります。
マイクロソフトでは、この問題を修正する修正プログラムを提供しています。 ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。 この修正プログラムは、ここで説明する問題が発生しているシステムにのみ適用してください。
修正プログラムがダウンロード可能な場合は、このサポート技術情報の上部に「修正プログラムのダウンロードが利用可能」セクションがあります。 このセクションが表示されていない場合は、Microsoft カスタマー サービス & サポート にリクエストを送信し、修正プログラムを入手してください。
注: 別の問題が発生した場合、またはトラブルシューティングが必要な場合には、別のサービス リクエストを作成することが必要になる場合があります。 特定の修正プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。 マイクロソフト カスタマー サービス サポートの電話番号一覧を参照、または別のサービス リクエストを作成するには、次のマイクロソフト Web サイトを参照してください。
/contactus/?ws=support 注: [修正プログラムのダウンロードが利用可能] フォームには、修正プログラムを使用できる言語が表示されます。 使用している言語が表示されない場合は、その言語の修正プログラムが存在しないことになります。
追加情報
原因: SQL Server はコンパイル ゲートウェイを使用してコンパイルを調整します。 ゲートウェイ アーキテクチャは、SQL Server が受信クエリのコンパイルのためのメモリ使用量を制御下に置くための方法です。 Small、Medium、Big の 3 つのゲートウェイがあります。
DBCC MEMORYSTATUS コマンドを使用してメモリ使用量を監視する方法の詳細については、「KB 907877: DBCC MEMORYSTATUS コマンドを使用して SQL Server 2005 でメモリ使用量を監視する方法」を参照してください。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。