我在世界各地部署了不少服务器。它们运行 Windows 2003 x64 和 SQL Server 2005 x64,内存为 6 GB。这些服务器的配置不是最好的(甚至不是可以接受的),因为几年前订购它们的人并不真正了解自己在做什么。
这些机器经常会耗尽内存,最终只能使用页面文件,所有东西都慢了下来。通常,提交费用为 5.8GB,当有人需要执行密集操作(例如运行报告)时,该数字就会飙升。
我一直在试图让权力机构订购更多的内存,但是我遭到了强烈的反对(例如,使软件性能更高、所有这些服务器的成本太高,或者证明机器没有足够的内存,等等...)。
是否有关于一个盒子需要多少 RAM 的指南(或公式),可以向非技术人员提供,以便我们最终可以订购更多内存?
答案1
真的没有办法轻易分辨,因为这完全取决于您的使用情况和应用程序。您正在最大限度地利用数据库服务器...数据库有多大?您的交易统计数据是什么?
您的场景中,现实世界的限制显而易见。您在 6 GB 上运行了一段时间,没有出现问题,然后就开始交换和抖动。因此 6 GB 是不够的。
如果性能足以影响业务,那么你的上级应该听到足够多的抱怨,认为增加内存是明智之举。弄清楚你的时间成本,然后弄清楚“调整”服务器和排除调整故障需要花费多少钱,而向服务器添加内存可能会以内存成本和不到半小时的停机时间很好地解决问题。
直到您实际部署并开始工作时,您才会知道所需的确切内存量。
话虽如此,您可能希望验证您的应用程序是否确实是瓶颈。运行 Windows 性能监视器以查看磁盘 I/O 统计信息和网络吞吐量。查看您的碎片级别(谷歌是这里的好朋友)。您也可以尝试审核代码以查找明显问题,其中查询效率极低(再次谷歌)。
但同样,这一切都取决于这对业务的影响有多严重。是否值得在调整上投入更多资金,还是先投入硬件然后再尝试调整就足够糟糕了?
答案2
要了解您是否需要更多 RAM,一种简单的方法是绘制页面预期寿命性能计数器图表。此计数器告诉您 SQL Server 认为在需要为其他数据腾出空间之前数据将在缓冲池中保留多长时间。您希望这个数字尽可能高。如果安装了 6 GB 的 RAM(您应该将 SQL 设置为最大 4 GB),您可能最多只会将数据保留在内存中几分钟,当有人运行大型报告时,您会看到这个数字下降到几秒钟。您拥有的 RAM 越多,数据可以在内存中保留的时间就越长,需要从磁盘读取的次数就越少。
例如,我目前正在使用的系统有 256 GB 的 RAM,我们将数据在内存中保存大约 12000 秒左右。
请不要要求达到目标数字,您只希望数字尽可能高。如果不了解您的系统,我无法给出一个值得追求的好数字。
答案3
嗯。好吧,6 GB 的内存量相当可观,即使对于大型 MSSQL 安装也是如此。您可能真的想查看并确保您的代码确实高效。6 GB 的交易有点不寻常……我曾参与过全州工资单系统的工作,该系统在年终 1099 处理方面没有超过 1 GB……并且要运行一个经常?我不知道。你处理的是哪种数据?
话虽如此,您可以在 64 位盒子中塞入任意数量的 RAM,而且 RAM 非常便宜,因此不妨尽可能多地放入其中...数据库服务器上的 RAM 确实不会太多。
编辑:这已经过时了。我有 256 GB RAM 的 MSSQL 机箱。
编辑:每五年就会变得更有趣。
答案4
正如“Satanicpuppy”所说,没有所谓的 RAM 太多,但 6GB 应该没问题,也许你应该重新考虑你的服务器的功能,我不认为你有“硬件”问题,你应该专注于你的 SQL 编程...