3

我有一个开发 vm,它正在运行 sql server 以及我的堆栈的其他一些应用程序,我发现其他应用程序的性能非常糟糕。在进行了一些挖掘之后,SQL Server 占用了内存。经过快速的网络搜索后,我发现默认情况下,它会消耗尽可能多的内存,以便缓存数据并将其返回给系统,因为其他应用程序请求它,但这个过程通常发生得不够快,显然我的情况是一个普遍的问题。

但是,有一种方法可以限制 SQL Server 允许拥有的内存。我的问题是,我应该如何设置这个限制。显然我需要做一些猜测和检查,但是有绝对的最小阈值吗?任何建议表示赞赏。

编辑:

我会注意到,开发人员机器有 2 gigs 的内存,所以如果可能的话,我希望能够在 768 mb 或更少的内存上运行 vm。此 vm 将仅用于本地开发和测试,因此负载将非常小。在本地测试代码后,它会转到另一个 SQL 服务器专用的环境。 我真正在这里寻找的是关于最低限度的建议

4

4 回答 4

3

从 SQL Server 文档中提取:

最大服务器内存(MB)

指定 SQL Server 在启动和运行时可以分配的最大内存量。如果您知道有多个应用程序与 SQL Server 同时运行并且您希望保证这些应用程序有足够的内存来运行,则可以将此配置选项设置为特定值。如果这些其他应用程序(例如 Web 或电子邮件服务器)仅在需要时请求内存,则不要设置该选项,因为 SQL Server 会根据需要向它们释放内存。但是,应用程序通常会在启动时使用任何可用的内存,并且在需要时不会请求更多内存。如果以这种方式运行的应用程序与 SQL Server 同时在同一台计算机上运行,​​则将该选项设置为一个值,以保证应用程序所需的内存不是由 SQL Server 分配的。

最低建议是:没有这样的事情。内存越大越好。SQL Sever 需要尽可能多的内存,否则它将破坏您的 IO。

停止 SQL Server。运行您的其他应用程序并注意它们需要的内存量。从您的总可用 RAM 中减去它,并将该数字用于 SQL Server 中的 MAX 内存设置。

于 2008-09-16T05:14:44.383 回答
1

所以如果可能的话,我希望能够在 768 mb 或更少的空间上运行 vm。

这将取决于您的数据和数据库的大小。但我通常喜欢给 SQL Server 至少一个 GB

于 2008-08-26T15:36:46.373 回答
1

这实际上取决于机器上发生的其他事情。让事情在典型负载下运行,并查看任务管理器以了解其他一切所需的内容。试试这个数字开始。

对于生产机器,当然最好将机器的控制权交给 Sql Server(Processors -> Boost Sql Server Priority),让它拥有它想要的所有 RAM。

由于您使用的是虚拟机,也许您可​​以为 Sql Server 创建一个专用的虚拟机,并在不同的虚拟机上运行其他所有内容。

于 2008-08-26T15:38:11.673 回答
1

由于这是一个开发环境,我同意 Greg 的观点,只是使用反复试验。让它完全正确并不是那么重要。

但是,如果你在 VM 中做了很多工作,为什么不给它至少一半的 2GB 空间呢?

于 2008-08-26T15:47:39.763 回答