SQL Server 占用了我服务器 RAM 的 87.5%。这最近导致了很多性能瓶颈,例如速度慢。我研究了这个问题。我可以在 Internet 上找到的一种常见解决方案是为 SQL Server 设置最大限制。这样做了,并获得了很大的改进。我想知道为什么如果没有设置最大内存值,为什么 SQL Server 会不断消耗资源
SQL Server 占用了我服务器 RAM 的 87.5%。这最近导致了很多性能瓶颈,例如速度慢。我研究了这个问题。我可以在 Internet 上找到的一种常见解决方案是为 SQL Server 设置最大限制。这样做了,并获得了很大的改进。我想知道为什么如果没有设置最大内存值,为什么 SQL Server 会不断消耗资源
SQL Server 将消耗您允许的尽可能多的内存。默认情况下,该数字将包含您机器上 100% 的数字内存。这就是为什么你看到你所看到的。如果您给 SQL Server 24 GB 内存,那么 SQL Server 将尽最大努力使用 24 GB 内存。然后你有 SQL Server 和操作系统争夺资源,它总是会导致性能不佳。
当您设置
max server memory
配置限制时,您将限制 SQL Server 可以为缓冲池分配多少(实际上它存储数据页和过程缓存的位置)。SQL Server 中还有其他内存管理员,因此对于您的特定版本(2008 R2 及以下),max server memory
只需控制缓冲池。但这始终是最大的内存消耗者。关于最小和最大服务器内存影响的 TechNet 参考
至于我应该为操作系统留多少内存的问题,这是一个普遍争论的指标。这实际上完全取决于服务器上正在运行的其他进程。前提是它是一个真正的专用服务器(几乎从来没有这种情况)。我希望操作系统至少有4 GB 内存(在大型硬件盒上甚至更多)。但最重要的是,监控有多少未使用的内存。如果您注意到大量可用内存(可以通过 perfmon 监控)和未使用内存(当然,总是为这些角落情况留出小缓冲区),请保持自由,并为 SQL Server 提供更多内存。
SQL Server 旨在默认使用服务器上的所有内存。这样做的原因是 SQL Server 将数据库中的数据缓存在 RAM 中,以便它可以比每次用户需要时都从磁盘读取数据时更快地访问数据。如果我们每次 SQL Server 都需要相同的数据时都需要访问磁盘,那么磁盘 IO 要求会非常高。
通常我建议人们为 Windows 保留大约 4 Gigs 的 RAM,但这实际上取决于服务器上运行的软件数量、您使用的 SQL Server 的哪些组件(并非所有组件都遵循该设置)等。
这可以立即工作,无需重新启动 SQL:
服务器内存服务器配置选项
使用两个服务器内存选项min server memory和max server memory重新配置 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,除非您设置了使用上限。作为一项规则,我尽量为操作系统留出不少于 2GB 的空闲空间,即如果主机中有 64 GB 的物理 RAM,则将 SQL Server 上限设置为 62 GB。
http://msdn.microsoft.com/en-us/library/ms191144(v=sql.105).aspx