我有一台 Windows 2008 R2 VPS,内存为 1 GB。我使用 VPS 运行 SQL Server 2008 Express 和 IIS 7.5。我注意到 SQL Server 倾向于使用尽可能多的内存,这会损害其他应用程序的利益(对于专用于运行 SQL Server 的服务器来说,这是有道理的)。我应该设置限制吗?如果是这样,合理的水平是多少?
答案1
是的,SQL Server 会按照设计默认使用尽可能多的内存。这确实是一件好事 - 如果您有数据库服务器,您希望它尽可能快地运行。
当然,如果您还需要在同一环境中运行其他应用程序,那么这会变得有点棘手……这总是一种权衡:您对 SQL Server 内存占用的限制越多,数据库服务器完成其工作就越困难。我没有任何可以提出的确凿事实和数字 - 但 1 GB 的 RAM 对于 SQL Server 来说似乎真的不算多。进一步限制内存肯定会损害性能 - 查询计划将无法长时间保存在缓存中,数据页将不得不更频繁地被丢弃,因此需要再次从磁盘重新加载。
再次强调:没有确切的数字或神奇的公式来确定 SQL Server 真正需要多少内存才能很好地完成其工作。您基本上必须测量您的性能 - 针对 SQL Server 和所有其他相关应用程序 - 然后根据您获得的性能数字做出决策。逐渐减少 SQL Server 的内存大小,看看它在什么时候真正开始变得糟糕 - 它可能在 700M 时还好,而在 450M 或任何其他情况下就开始变得糟糕 - 实际上没有确定的方法可以知道是什么。调整、观察、测量,然后再次调整 - 这就是您所能做的一切!
答案2
理想情况下,我建议获取更多的 RAM,并将除 1GB 之外的所有内存都分配给 SQL Server。
除此之外,我会先将一半交给 SQL Server,然后看看哪个更糟糕,是数据库还是其他应用程序。
根据我的经验,它会立即使用 250MB,之后全部用于缓存 - 但一定程度的缓存对于足够的性能至关重要。
答案3
我的购物清单上会优先考虑更多的内存!请记住,SQL Server Express 只会将 1GB 内存用于缓冲池(总使用量可能更多,但缓冲池只有 1GB)。当然,您可以直接从管理工作室限制最大内存使用量,方法是右键单击服务器,选择属性,然后转到内存页面,该选项称为“最大服务器内存(MB)”。