windows-server-2008 – Ram建议与SQL DB大小

前端之家收集整理的这篇文章主要介绍了windows-server-2008 – Ram建议与SQL DB大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有一个大约40GB的中等大小的sql数据库,并准备将它移动到服务器2008 r2 x64的新盒子

一个昂贵的承包商刚刚进来说我们需要72gb的内存,以便整个数据库可以存在于RAM中我猜…我发现这很荒谬,但也许我错过了一些东西.

我想知道是否有一个“经验法则计算”暗示了在sql实例上使用的大量内存.

编辑:
数据库在任何时候都有多达150人点击它,用于运行预订系统.非常讨厌的旧数据库模式,很多表中的大量列,大量的半无意义索引.
通过.net访问一些sprocs,但也查询原始sql,以及VisualDataFlex使用的任何东西.

谢谢

NAT

没有好的经验法则.

附加RAM的实用性在很大程度上取决于数据库的设计方式以及查询模式或用户.作为一个极端的例子,如果总共有1 TB的数据,良好的索引和1000个并发用户只能追踪1个特定行(从dbo.BigTable中选择*,其中pkey_id = 42),你可以用很少的RAM .更多RAM的影响还取决于磁盘存储子系统的速度.如果您有超快速存储(良好的SAN,良好的DASD或SSD),您可能不会注意到服务器需要读取数据时的延迟.

理想情况下,您希望数据库在白天缓存在RAM中时可能需要的所有数据.这有时被称为“热数据”或“热门页面”(在sql Server中,数据以称为“页面”的单位组织).热数据的一个例子可能是今天或昨天的订单,运送这些订单的工人将需要这些订单.冷数据的一个例子可能是两年前的订单,但系统中仍然存在订单,以便CSR可以查找旧订单.

使用精心设计的OLTP系统,总共有40 GB的数据(而不是最多可增加40 GB的数据文件),热数据可能只有10 GB,5 GB,1 GB或更低.在过去,仅购买64 GB RAM和8 GB(甚至更少)之间的差异是天文数字,并且获得正确购买的RAM数量值得花费大量时间.

你总是想要一些额外的RAM用于“开销”,如操作系统,病毒扫描程序,RDP会话.您还希望考虑数据库增长.

要记住的另一件事是RAM是“块”.您不能在48 GB和49 GB之间做出决定,您必须加强,可能从48到64 GB.块的大小取决于当前销售的RAM技术以及内存的通道数.旧服务器对内存进行了一次更改,然后服务器开始有两个,现在最强大的服务器有三个内存通道.所以,你不能只添加一根棍子,你需要一次添加两根.

如果你有一个设计糟糕且索引很差的数据库,正如你所说的那样,sql将最终读取大量数据,而这些数据不需要设计得更好的数据库.将所有数据都存储在RAM中并不意味着它不能全部读取.它只是意味着它可以更快地读取RAM中的所有数据,如果数据位于磁盘存储上则更快.这不一定能解决你所有的问题;从RAM读取数据很快但仍然需要一段时间,您仍然可能会遇到阻塞和死锁问题,从而导致性能问题.

另一件事是,当人们在使用去年数据的系统上运行大型报告时,更多RAM会有所帮助.人们一直将OLTP系统视为报告系统.这种情况可能并不罕见,特别是对于随意的SQL查询.

您可以花时间(和金钱)开发人员和测试人员来改进数据库设计,并对前端进行必要的更改.

一个非常快速的hp.com之旅表明,我可以得到一个(非常)精简的服务器,96 GB的RAM,大约9,000美元.

(每GB不到100美元,不考虑服务器中的任何其他部分.电源或处理器等部件.像我这样的老人记得当每个兆字节的RAM为5,000美元时.用M.)

你在开发和测试时间上花多少美元9,000美元? (按照我所在地区的公司费率,这整整一个月几乎不会让你整整一个人.)这是否有足够的时间来修复数据库中的所有内容?如果更改的代码中的错误滑过怎么办?

添加RAM的服务器中断可能需要一个小时,几乎任何人都可以完成这项工作.迁移到一个全新的服务器可能需要几天的准备工作和一小时的停机时间,你需要有经验的人(可能是DBA).

添加RAM不太可能导致任何错误.迁移到新服务器不太可能导致任何难以发现的问题. (一般来说,东西既可以工作,也可能会被破坏.通常是“哎呀,错误的密码”或“哎呀,忘了复制链接的服务器”,它永远不会“嘿,这个计算突然无法正常工作”.)

因此,假设我们要将所有内容保存在RAM中,并且我们有一个40 GB的数据库,我们需要一些开销空间.我想的是一台48 GB左右的服务器.另外,我们想要一些增长空间.我们只说这里增长25%,即12 GB,最高可达60 GB.下一级(我实际上可以购买)是64 GB.如果您的顾问建议使用三通道服务器,则下一级别可能是72 GB.所以,他的建议不一定是古怪的.也许你不需要那么多内核/插槽,这可能会让你回到双通道服务器(无论如何都会更便宜),你可以购买更少的内存.

TLDR:

简而言之,我很少,RAM便宜而且时间昂贵.如果您没有资金,时间或倾向于修复数据库,或者您不想冒险将错误添加到您的应用程序中,那么在问题上抛出RAM就很难对了.另一个好的举措是提高磁盘存储系统的响应能力(IOW,添加更多主轴,更多RPM或使用SSD).

我会问为什么顾问不想让你花一年时间和10万美元来重写他的系统.

猜你在找的Windows相关文章