据我所知,SQL Server 2008 Express 至少需要 512MB RAM 才能在 Windows Server 2003 上运行,但这是否足以对大约 50,000 条记录运行全文搜索?我不想付太多钱,而且我看到了一个让我感兴趣的 512MB RAM VPS 选项。
谢谢
答案1
从您的问题角度来看,50K 记录完全无关紧要,因为 1 条记录可能为 1024 字节或 1Mb,第一种情况我们谈论的是 ~50Mb 数据,第二种情况是 ~50Gb 数据,我认为相关信息将是数据集大小,当然不包括索引。另一个问题是全文搜索实现。您可能还需要考虑操作系统的需求。老实说,在 2009 年,512Mb RAM 比最佳值略少 :)
答案2
512MB 很可能是其运行所需的最小 RAM。但是,从内存来看,运行中未加载任何内容的 SQL 实例不需要那么多。
您需要考虑的因素包括存储的数据大小以及您满意的性能水平。
我猜想建议查看要索引的数据大小,并查看在将所有内容加载到内存后,它是否可以轻松容纳在数据库中可用的任何内存中。如果不是,那么 SQL 服务器将分页到磁盘,一切都会变慢。
答案3
我能给出的唯一真正答案是“也许”。
在 VPS 提供商上托管时,最重要的是尽量拥有足够的 RAM,以便尽可能多的数据和索引(或至少正常的“工作集”加上一些)可以放入 RAM 中。您将与其他 VPS 帐户共享 I/O 子系统,这些帐户可能在规格不足的 VM 上运行繁重的应用程序,因此即使节省少量的磁盘访问也可以使您的应用程序在其他 VM 处于活动状态时响应更快。
测试此问题的最佳方法是使用免费虚拟化解决方案之一在虚拟机中安装应用程序和数据库(如果您尚未设置实时设置,则安装适当大小的测试数据),针对应用程序运行一些基准测试(或者只是让一些用户点击),然后通过虚拟机中相关的 Windows 性能计数器观察 I/O 结果。使用不同的 RAM 分配重复测试,直到找到最佳点,在此点上添加更多 RAM 对 I/O 负载几乎没有影响。
答案4
我认为这不是它能否运行的问题,而是它运行得如何的问题。SQL Server 的设计就是尽可能地消耗内存,一旦发生这种情况,它就会开始将页面输出到磁盘。此时,速度似乎会变慢,因为将页面输出到磁盘比将页面输出到内存要慢得多。
在没有运行 SQL Server 或任何其他服务的情况下,Windows 2003 机器使用大约 256mb(我认为?)。这样,一半的内存可供 SQL Server 使用。数据库的大小有多大?它能像索引一样装入内存吗?速度有多重要?