我们管理着几乎十二个SQL Server 2016 Enterprise实例,并且在所有实例中都发生这种情况:查询所需内存过剩。在GB级别上的实际高估。
大多数服务器具有512 GB或256 GB的RAM,所以据我所知,根据设计,SQL Server将其专用内存的75%用于查询(工作空间内存),而从这75%来看,它可能要占用25%的内存。每个查询的最大授权内存。好吧,这导致我们进行查询-我所知道的错误查询(在视图之后需要进行多次连接,排序和查看,并且查询成本成千上万)有时会被授予〜45 GB的RAM(占75%的25%)。>
从下图中可以看到,问题是:
请求和授予的内存都比所需的和专门使用的内存优越。
我已经尝试过了,但无济于事:
因此,从SQL Server的工作方式来看,只需要5到6个请求请求的事务处理就很不容易估计(例如,每个事务需要45 GB),才能将所有其他剩余查询引导到RESOURCE_SEMAPHORE等待队列(因为SQL Server认为“将会话放入资源信号中时不是请求的”内存,而不是“必需的”内存。
您有什么想法或建议吗?