web-dev-qa-db-ja.com

リソースガバナーを使用してより多くのメモリを割り当て、クエリによる高メモリ許可要求を満たす

SQL Server 2016データベースサーバーで、本当に遅く、より多くのメモリを要求するクエリがいくつかあります(クエリは最適化されていません)。多くのユーザーが同じクエリを実行しているため、データベース全体が遅くなります。これにより、他のクエリが待機します。 CXCONSUMER wait(並列実行のため)とRESOURCE_SEMAPHORE

したがって、これはメモリプレッシャーを引き起こし(これらの遅いクエリが他のクエリのメモリ競合を引き起こし、メモリプレッシャーを引き起こしていると思います)、これにより、プランキャッシュが一定の間隔でクリアされると思います。

Memory Grant%のデフォルトは25%です。クエリ用のメモリを確保するために、この25%を増やすことを考えています。とりあえず一時的に解決しようとしています。

最適化されていないクエリはLINQクエリであり、チームに時間がかかる変更です。

リソースガバナーでMemory Grant%を増やすのが良い考えかどうかを提案してください。

合計128GB RAM=で、その75%(102 GB)がSQL Serverに割り当てられています。

2
user9516827

これはあなたがすべきことの反対です。

RESOURCE_SEMAPHOREで待機しているクエリがある場合、クエリは他のクエリが実行を完了するのを待機しており、theirメモリをあきらめます。待機中のクエリは実行されていません。

すべてのクエリにmoreメモリを使用させると、問題が悪化するだけです。リソースガバナーを構成して、クエリがより小さな許可を要求するようにします。ただし、ディスクへの流出はさらに悪化するため、これも問題を引き起こす可能性があります。

5
Erik Darling