【问题标题】:SQL Server 2k5 memory consumption?SQL Server 2k5 内存消耗?
【发布时间】:2010-09-06 21:39:42
【问题描述】:
我有一个开发 vm,它正在运行 sql server 以及我的堆栈的其他一些应用程序,我发现其他应用程序的性能非常糟糕。在进行了一些挖掘之后,SQL Server 占用了内存。在快速的网络搜索之后,我发现默认情况下,它会消耗尽可能多的内存,以便缓存数据并将其返回给系统,因为其他应用程序请求它,但这个过程通常发生得不够快,显然我的情况是一个普遍的问题。
There however is a way to limit the memory SQL Server is allowed to have。我的问题是,我应该如何设置这个限制。显然我需要做一些猜测和检查,但是有绝对的最小阈值吗?任何建议表示赞赏。
编辑:
我会注意到,开发人员机器有 2 gigs 的内存,所以如果可能的话,我希望能够在 768 mb 或更少的内存上运行 vm。该虚拟机将仅用于本地开发和测试,因此负载将非常小。在本地测试代码后,它会进入另一个 SQL 服务器专用的环境。 我真正想要的是关于最低要求的建议
【问题讨论】:
标签:
sql-server
performance
【解决方案1】:
摘自 SQL Server 文档:
最大服务器内存(MB)
指定最大内存量
SQL Server 启动时可以分配
当它运行时。这个配置
选项可以设置为特定值
如果你知道有多个
同时运行的应用程序
作为 SQL Server 并且您想要
保证这些应用程序有
足够的内存来运行。如果这些
其他应用程序,例如 Web 或
电子邮件服务器,请求内存仅作为
需要,然后不要设置选项,
因为 SQL Server 会释放内存
根据需要给他们。 但是,
应用程序经常使用任何内存
当他们开始和做时可用
如果需要,不要要求更多。
在此行为的应用程序
方式在同一台计算机上运行
与 SQL Server 一样,设置
选择一个值,保证
应用程序所需的内存
不是由 SQL Server 分配的。
关于最低限度的建议是:没有这样的事情。内存越大越好。 SQL Sever 需要尽可能多的内存,否则它将破坏您的 IO。
停止 SQL Server。运行您的其他应用程序并注意它们需要的内存量。从您的总可用 RAM 中减去该数字,并将该数字用于 SQL Server 中的 MAX 内存设置。
【解决方案2】:
由于这是一个开发环境,我同意 Greg 的观点,只是使用试错法。完全正确并不重要。
但如果你在 VM 中做了很多工作,为什么不给它至少 2GB 的一半呢?
【解决方案3】:
所以我希望能够在上面运行虚拟机
如果可能,768 mb 或更少。
这取决于您的数据和数据库的大小。但我通常喜欢给 SQL Server 至少一个 GB
【解决方案4】:
这真的取决于机器上还发生了什么。让事情在典型负载下运行,并查看任务管理器以了解其他一切所需的内容。试试这个数字开头。
对于生产机器,当然最好将机器的控制权交给Sql Server(Processors -> Boost Sql Server Priority),让它拥有它想要的所有RAM。
由于您使用的是虚拟机,也许您可以为 Sql Server 创建一个专用的虚拟机,并在不同的虚拟机上运行其他所有内容。