使用资源调控器并分配更多内存以满足查询的高内存授予请求?

use*_*827 2 sql-server memory resource-governor waits

在 SQL Server 2016 数据库服务器上,我几乎没有查询非常慢并且需要更多内存(查询未优化)。这使得整个数据库变慢,因为许多用户正在运行相同的查询。这导致其他查询等待。我CXCONSUMER等待(由于并行执行)和RESOURCE_SEMAPHORE.

所以这造成了内存压力(我相信这些缓慢的查询正在为其他查询造成内存争用,进而造成内存压力),我认为这导致我的计划缓存以固定的时间间隔清除。

我读到默认情况下Memory Grant %为 25%。我正在考虑增加这 25% 来为查询提供内存。我现在正在尝试暂时解决这个问题。

未优化的查询是 LINQ 查询,更改将需要团队一些时间。

所以请建议在资源调控器中增加Memory Grant %是否是一个好主意?

我总共有 128GB RAM,其中 75% (102 GB) 分配给 SQL Server。

Eri*_*ing 5

你应该做的相反

当您有查询等待时RESOURCE_SEMAPHORE,它们正在等待其他查询完成运行,并放弃它们的内存。正在等待的查询甚至没有运行。

让所有查询使用更多内存只会使问题变得更糟。您想配置资源调控器来使查询请求较小的授权。但是,这也可能导致问题,因为任何溢出到磁盘的情况都会变得更糟。