我目前正在浏览《Pro SQL Server 2019 管理:现代 DBA 指南》,发现一件事让我有些困惑。
在第 5 章:配置实例中,有关最小和最大服务器内存的部分(第 139-140 页)说:
在许多环境中,您可能希望为最小和最大服务器内存提供相同的值。这将避免 SQL Server 动态管理其保留的内存量的开销。
但是,如果您有多个实例,则动态内存管理可能会有所帮助,以便在任何给定时间具有最重工作负载的实例可以消耗最多的资源。
...假设您有一个实例并且没有其他应用程序(例如 SSIS 包)在服务器上运行,您通常会将最小和最大内存设置设置为
- 内存 - 2 GB
- (内存/8)* 7
然而,“为最小和最大服务器内存提供相同的值”的建议与文档相矛盾,文档说:
不建议将最大服务器内存 (MB) 和最小服务器内存 (MB) 设置为相同或接近相同的值。
在什么情况下最好将最大服务器内存和最小服务器内存设置为相同的值?
或者我对建议有什么误解?
这是愚蠢的建议
通过保持咖啡桌水平或其他什么,这本书可能会更好地为你服务。当您将最小服务器内存设置为等于最大服务器内存时,SQL Server 无法再动态使用内存。
请参阅:动态内存管理:
在有关来宾内存预留和启用内存中锁定页面的建议被更普遍遵循之前,这对虚拟机来说是一个(糟糕的)建议。内存中的锁定页面具有类似的总体效果,同时仍然允许在 SQL Server 进程内动态使用内存。
换句话说,如果将两者设置为相同的值,缓冲池之外的内存消耗者可能会遇到相当困难。您不希望这样,因为其他使用者会做重要的事情,例如管理锁,并为查询提供运行内存。