SQL Server 2016データベースサーバーで、本当に遅く、より多くのメモリを要求するクエリがいくつかあります(クエリは最適化されていません)。多くのユーザーが同じクエリを実行しているため、データベース全体が遅くなります。これにより、他のクエリが待機します。 CXCONSUMER
wait(並列実行のため)とRESOURCE_SEMAPHORE
。
したがって、これはメモリプレッシャーを引き起こし(これらの遅いクエリが他のクエリのメモリ競合を引き起こし、メモリプレッシャーを引き起こしていると思います)、これにより、プランキャッシュが一定の間隔でクリアされると思います。
Memory Grant%のデフォルトは25%です。クエリ用のメモリを確保するために、この25%を増やすことを考えています。とりあえず一時的に解決しようとしています。
最適化されていないクエリはLINQクエリであり、チームに時間がかかる変更です。
リソースガバナーでMemory Grant%を増やすのが良い考えかどうかを提案してください。
合計128GB RAM=で、その75%(102 GB)がSQL Serverに割り当てられています。
これはあなたがすべきことの反対です。
RESOURCE_SEMAPHORE
で待機しているクエリがある場合、クエリは他のクエリが実行を完了するのを待機しており、theirメモリをあきらめます。待機中のクエリは実行されていません。
すべてのクエリにmoreメモリを使用させると、問題が悪化するだけです。リソースガバナーを構成して、クエリがより小さな許可を要求するようにします。ただし、ディスクへの流出はさらに悪化するため、これも問題を引き起こす可能性があります。