SQL Server 2005性能会随着更多内存的增加而增加多less?

我正在寻找意见和资源,以增加更多的RAM在服务器上的性能会增加多less。 什么因素起作用? 有一个可以执行的一般计算吗?

这完全是主观的…

  • 您是否将SQL Server 2005用作64位程序?
  • 数据库是服务器上唯一的应用程序吗?
  • 你是否分析了服务器,看看内存是否紧张? 或磁盘I / O? 还是networking? 处理器?

如果你看到性能下降,你需要确定瓶颈,然后从那里出发。 使用Windows性能监视器可能会有所帮助。 在问题中随机抛出硬件可能根本没有帮助(尽pipe通常内存不会受到伤害)。

一般而言,如果数据的工作集完全适合RAM,则可以实现数据库的最佳性能。 工作集是您的数据的子集,通过查询定期读取(更新和插入总是命中数据库,所以更多的RAM不一定会加快速度)。 所以首先你需要确定你需要多less内存来caching所有相关的数据。 然后,您需要查看将该RAM提供给SQL Server的最佳方法。

据我所知,没有任何计算能够根据内存量的增加来预测性能的提高。 正如其他人所指出的那样,两者之间的关系并不是线性的,还有其他因素。 假设其他地方没有大规模的瓶颈,joinRAM几乎总是有帮助的。

还有一点需要注意:如果您在32位版本的Windows和/或SQL Server上运行,则根据两台服务器的configuration,您可能需要在2GB到4GB之间的RAM数量受到限制。 如果您同时升级到64位版本,则可以使用超过4GB的RAM来提高性能。

正如Bart所build议的那样,您需要隔离并识别服务器上的最高瓶颈,并解决问题以获得最佳性能。 正如您已经在SQL Server 2005上,您可以使用服务器上的等待状态。 以下是来自Glenn的诊断查询的查询。 链接在这里。 http://glennberrysqlperformance.spaces.live.com/blog/cns!45041418ECCAA960!1340.entry

– 隔离顶部等待服务器实例自上次重新启动或统计清除WITH等待AS(SELECT wait_type,wait_time_ms / 1000. AS wait_time_s,100. * wait_time_ms / SUM(wait_time_ms)OVER()AS pct,ROW_NUMBER()OVER(ORDER BY wait_time_ms DESC)AS rn FROM sys.dm_os_wait_stats WHERE wait_type NOT IN('SLEEP_TASK','BROKER_TASK_STOP','SQLTRACE_BUFFER_FLUSH','CLR_AUTO_EVENT','CLR_MANUAL_EVENT','LAZYWRITER_SLEEP')) – 过滤掉额外的不相关的等待SELECT W1.wait_type ,CAST(W1.wait_time_s AS DECIMAL(12,2))AS wait_time_s,CAST(W1.pct AS DECIMAL(12,2))AS pct,CAST(SUM(W2.pct)AS DECIMAL(12,2))AS running_pct从等待AS W1 INNER JOIN等待AS W2 ON W2.rn

这就是说,一般来说,SQL Server主要受内存,IO和CPU的约束,并且大部分是按照这个顺序。 您需要使用perfmon / sql server DMV来查看页面预期寿命值。 如果它有更多的内存SQL Server繁荣。 但是请注意,我反对在TSQL领域中最好处理硬件问题。 很可能你需要查看做大多数IO的查询(这些可能会颠倒缓冲池),创build有意义的索引,删除未使用的索引,处理缺失的索引或优化sql。 优化SQL是人们通常由于缺乏技能而失败的原因。