SQL Server占用了我的服务器RAM的87.5%。最近,这引起了许多性能瓶颈,例如速度缓慢。我研究了这个问题。我可以在互联网上找到的一种常见解决方案是设置SQL Server的最大限制。这样做已经取得了很大的进步。我想知道为什么如果未设置最大内存值,为什么SQL Server会继续消耗资源
SQL Server占用了我的服务器RAM的87.5%。最近,这引起了许多性能瓶颈,例如速度缓慢。我研究了这个问题。我可以在互联网上找到的一种常见解决方案是设置SQL Server的最大限制。这样做已经取得了很大的进步。我想知道为什么如果未设置最大内存值,为什么SQL Server会继续消耗资源
Answers:
SQL Server将消耗尽可能多的内存。默认情况下,该数字将包含计算机上100%的数字内存。这就是为什么您看到自己所看到的。如果为SQL Server提供24 GB的内存,则SQL Server将尽力使用24 GB的内存。然后,您需要SQL Server和OS来争夺资源,这总是会导致性能下降。
设置max server memory
配置限制时,将限制SQL Server可为缓冲池分配的数量(实际上是在其中存储数据页和过程缓存的位置)。SQL Server中还有其他内存职员,因此对于您的特定版本(2008 R2及更低版本),max server memory
仅控制缓冲池。但这始终将是最大的内存消耗者。
最小服务器内存和最大服务器内存配置选项确定Microsoft SQL Server数据库引擎的缓冲池使用的内存量的上限和下限。
至于我应该为OS保留多少内存的问题,这是一个经常争论的指标。实际上,这完全取决于服务器上正在运行的其他进程。如果它是一台真正的专用服务器(几乎从来没有这样)。我希望看到该操作系统至少有 4 GB的内存(在大型硬件盒上甚至更多)。但最重要的是,监视有多少未使用的内存。放宽手脚,如果注意到大量可用(可以通过perfmon进行监视)和未使用的内存(当然,对于那些紧急情况总是留有很小的缓冲区),请给SQL Server更多的内存。
这可以立即运行,而无需重新启动SQL:
使用最小服务器内存和最大服务器内存这两个服务器内存选项,为SQL Server实例重新配置由SQL Server内存管理器管理的内存量(以兆字节为单位)。默认情况下,SQL Server可以根据可用的系统资源动态更改其内存要求。
配置固定内存量的过程要设置固定内存量:
使用默认设置允许SQL Server根据可用的系统资源动态更改其内存要求。最小服务器内存的默认设置为0,最大服务器内存的默认设置为2147483647兆字节(MB)。
我希望这有帮助!
正如Eric所说的,您必须管理内存以便为其他进程保留可用空间。有关如何设置最大内存的一般说明和一些指导,请查看乔纳森·凯海耶斯(Jonathan Kehayias)的文章:
http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/
您可以考虑服务器使用情况来修改建议。
除非您限制使用率,否则SQL Server将利用可用的RAM。通常,我尝试为OS留出不少于2GB的可用空间,即,如果主机中有64 GB的物理RAM,则将SQL Server的上限设置为62 GB。
http://msdn.microsoft.com/zh-CN/library/ms191144(v=sql.105).aspx