在 SQL Server 2016 数据库服务器上,我很少有查询非常慢并且需要更多内存(查询未优化)。这使得整个数据库变慢,因为很多用户都在运行相同的查询。这导致其他查询等待。我CXCONSUMER
等待(由于并行执行)和RESOURCE_SEMAPHORE
.
所以这造成了内存压力(我相信这些缓慢的查询正在为其他查询造成内存争用,进而造成内存压力)并且我认为这导致我的计划缓存以固定的时间间隔清除。
我读到Memory Grant %默认是 25%。我正在考虑增加这 25% 以便为查询提供内存。我现在正在尝试暂时解决问题。
未优化的查询是 LINQ 查询,团队需要一些时间才能进行更改。
所以请建议在资源调控器中增加内存授予百分比是否是个好主意?
我总共有 128GB RAM,其中 75% (102 GB) 分配给了 SQL Server。
这与你应该做的相反。
当您有查询等待时
RESOURCE_SEMAPHORE
,它们正在等待其他查询完成运行,并放弃它们的内存。正在等待的查询甚至没有运行。让所有查询使用更多内存只会让问题变得更糟。您想要配置资源调控器以使查询请求较小的授权。不过,这也可能会导致问题,因为任何溢出到磁盘的情况都会变得更糟。