SQL Server中的最大内存设置


11

我在单个专用服务器上运行SQL Server 2008和基于Web的应用程序,仅提供2Gb内存。

如其他地方所述,SQL Server通常会占用高达98%的物理内存,这似乎减慢了服务器上运行的Web应用程序的速度。

在SSMS的服务器属性中的“内存”下,“最大服务器内存”(以Mb为单位)设置为:2147483647 SQL服务器

我的问题是,考虑到我拥有的可用内存量,并且同一台服务器也正在运行Web应用程序,建议在最大服务器内存框中放入的建议数量是多少?

此外,在SQL Server运行时更改此数字是否安全?

感谢您的意见。


2
最近写的一篇有关SQL Server上的内存过量使用的文章可能对您阅读很有帮助。
乔恩·塞格尔

Answers:


13

我将首先回答最后一个问题:是的,您可以在服务器运行时无问题地对其进行更改。如果要通过SQL更改值,可以使用以下查询进行操作

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO

有关在SQL Server上设置内存的更多详细信息,请参见此页面


不幸的是,您的第一个问题是:我不能告诉您,我不在。

分配内存时需要考虑一百万个因素。查询的结果集有多大,它们运行的​​频率如何?过去需要20毫秒的查询现在可以花200毫秒吗?

Sql的默认值假定它是服务器上唯一运行的东西,因此它仅将内存设置为MAX_VALUE,并且在所有可用内存都在使用时(以及在与您要发生的事情相当接近的专用硬件上,它停止增长)Aarons提出了可能的警告))。通常,任何与数据库交互的Web服务器或其他软件都将位于通过网络与其通信的不同硬件上。

您实际上只需要将其设置为您认为合理的值,如果您的Web服务器的内存仍然不足,则将其降低。如果在为Web服务器提供所需的内存后,SQL没有为您提供足够的性能,则您需要购买更多的ram或将SQL移至专用硬件。


2
SSMS中有一份关于SQL Server内存的不错的报告:blogs.msdn.com/b/buckwoody/archive/2007/10/17/…您可以跟踪哪个部分消耗了最多的内存
DiGi

1

您绝对不应允许sql server占用盒子上的所有内存。它的确取决于盒子上正在运行的内容以及盒子上有多少内存,但是我始终确保为O留出10%的内存。 \ S。


0

在我目前受雇的公司中,我总是使用SQL Server的最小和最大设置。如果仅将服务器用于SQL Server,则最大值始终设置在MAX内存上-对于OS为1GB。在我们的情况下,最低为2GB。

但这已为我们的安装证明。并非每个安装和用法都相同,而且我仍然觉得内存始终无法满足您的要求;)

在您的情况下可能是众所周知的事情,但同时也要注意内存的交换。如果服务器上只有2GB,并且OS和SQL Server在“高负载”下运行,则内存消耗将变得过高,导致OS倾向于进行一些交换。确保您的分页文件不在操作系统驱动器上,否则可能会导致系统完全阻塞(以前在那里并且不喜欢它)


-1

我只是更改了实时服务器上的“最大服务器内存”而没有问题。似乎默认情况下在所有数据库上它都设置为2147483647(但我不知道如何在更改之前从SQL实际读取它的值)...


-2

在99%的情况下坚持默认设置。这将允许动态管理内存。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.