我在我的在线服务器上使用SQL Server 2008企业,主数据库有每月超过200万条记录的表,因为这些表增长SQL Server从安装的4GB内存中占用了大量资源然后关闭了服务器RAM。
我已经将SQL Server RAM限制为2GB,但是当它使用这些ram时,它会停止正常工作,破坏连接并且执行速度太慢。
这是正常的吗?在查询这些大表后,如何从SQL Server中恢复RAM?
答案 0 :(得分:5)
在运行SQL Server的专用Windows服务器上,某些计数器将降至5-15 MB可用RAM。这是正常的。没有内存泄漏。
如果您安装了4GB RAM,我会考虑在32位上使用/ 3GB开关,并让SQL Server为自己设置RAM。对于64位,添加更多RAM并再次让SQL Server为自己设计RAM。
RAM的饥饿SQL Server将导致磁盘颠簸,因为数据是通过内存进行搅拌的。
如果您的SQL Server不在专用的盒子上,那么将其移到一个。
答案 1 :(得分:3)
见这里:The SQL Server Memory Leak Confusion
基本上SQL Server将使用尽可能多的内存,从磁盘读取比从RAM读取要昂贵得多。要释放RAM,您可以重新启动,但是再次所有查询都会很慢,因为它会点击磁盘
答案 2 :(得分:1)
您需要让Sql Server处理内存。它会尝试使用你给它的任何东西,因为它加载到内存中的速度与它的执行速度直接相关。不要担心限制它。它会在需要时将内存返回给系统上的其他进程,并在完成这些进程后回收它。
答案 3 :(得分:1)
您可能希望 SQL服务器使用大量RAM。它被设计为使用尽可能多的内存,因为您可以在内存中缓存结果和表,以便将来访问速度更快(如您所述)。
如果SQL服务器的内存不足,它将自动“老化”查询和缓存,以便删除最旧的查询和缓存。
Read here了解更多信息。