SQL Server占用了我的服务器RAM的87.5%。最近,这引起了许多性能瓶颈,例如速度缓慢。我研究了这个问题。我可以在互联网上找到的一种常见解决方案是设置SQL Server的最大限制。这样做已经取得了很大的进步。我想知道为什么如果未设置最大内存值,为什么SQL Server会继续消耗资源

评论

您如何确定SQL Server对RAM的使用是任何瓶颈的根源?慢什么?如果有的话,如果SQL Server使用尽可能多的RAM(甚至比您期望或希望的更多),它应该会更有效率。而且,如果服务器上还有其他应用程序由于SQL Server正在使用内存(如设计那样)而受苦,请将它们移至另一台服务器。

我在这里使用过此方法lucidica.com/help/got-sql-eating-up-ram让我知道是否有帮助:)亲切的问候,尼基塔。

#1 楼

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仅控制缓冲池。但这始终将是最大的内存消耗者。

最小和最大服务器内存影响的TechNet参考



最小服务器内存和最大服务器内存配置选项确定Microsoft SQL Server数据库引擎的缓冲池使用的内存量的上限和下限。


关于我应该为OS保留多少内存的问题,这是一个经常争论的指标。实际上,这完全取决于服务器上正在运行的其他进程。如果它是一台真正的专用服务器(几乎从来没有这样)。我希望看到该操作系统至少有4 GB的内存(在大型硬件盒上甚至更多)。但最重要的是,监视有多少未使用的内存。放心一点,如果注意到很多可用(可以通过perfmon进行监视)和未使用的内存(当然,对于那些极端的情况总是要留一点缓冲区),请给SQL Server更多的内存。

#2 楼

默认情况下,SQL Server设计为使用服务器上的所有内存。原因是SQL Server将数据缓存在RAM中的数据库中,以便它比每次用户需要时都需要从磁盘读取数据的访问速度更快。如果每次SQL Server在磁盘上需要相同的数据时都需要访问磁盘,那么IO需求会非常高。

通常我建议人们为Windows留出大约4 Gig的RAM,但这实际上取决于服务器上运行的软件数量,正在使用的SQL Server组件(并非所有组件都遵循该设置)等。

#3 楼

这可以立即生效,无需重新启动SQL:

服务器内存服务器配置选项

使用两个服务器内存选项(最小服务器内存和最大服务器内存)重新配置数量SQL Server内存管理器为SQL Server实例管理的内存(以兆字节为单位)。默认情况下,SQL Server可以根据可用的系统资源动态更改其内存要求。

配置固定数量的内存的过程
设置固定数量的内存:


在“对象资源管理器”中,右键单击服务器,然后选择“属性”。
单击“内存”节点。
在“服务器内存选项”下,输入所需的“最小服务器内存”和“最大”数量服务器内存。

使用默认设置允许SQL Server根据可用的系统资源动态更改其内存要求。最小服务器内存的默认设置为0,最大服务器内存的默认设置为2147483647兆字节(MB)。

希望对您有所帮助!

#4 楼

正如Eric所说的,您必须管理内存以便为其他进程保留可用空间。有关如何设置最大内存的一般说明和一些指导,请查看Jonathan Kehayias的文章:

http://www.sqlskills.com/blogs/jonathan/how-much-memory- dos-my-sql-server-actually-need /

您可以考虑服务器使用情况来修改建议。

#5 楼

除非您限制使用率,否则SQL Server将利用可用的RAM。通常,我尝试为OS留出不少于2GB的可用空间,即,如果主机中有64 GB的物理RAM,则将SQL Server的上限设置为62 GB。 .com / zh-CN / library / ms191144(v = sql.105).aspx