这是一个纯粹的理论问题。假设我有一个部署在多台服务器上的应用程序。


负载平衡器,
多个/可伸缩的应用程序服务器
(目前)一台(单个)数据库服务器

前两个部分,我确实知道要寻找什么。但是数据库服务器呢?我应该寻找哪种硬件?


CPU频率是否与数据库服务器相关?
多个核心CPU是否相关?
RAM比CPU重要吗?

PS:假设所选数据库是MySQL或PostgreSQL。

评论

好吧,它必须有一个。

#1 楼

对于PostgreSQL,CPU功能可能非常相关,尤其是如果您的数据活动工作集中有相当大的百分比适合RAM时。我使用过的大多数数据库大多数时候都将CPU功能作为主要瓶颈。 (我只是在托管网站的服务器上检查了vmstat,该网站每天有数百万次点击,托管超过5TB的数据库空间,但我从未看到磁盘等待时间超过2%,但是看到了12%的用户CPU时间高峰。) />
由于PostgreSQL是基于进程的,所以任何单个进程只能以一个内核的速度运行,但是就像上面提到的服务器那样,在混合的情况下,大量的小请求,总的CPU所有核心都是最重要的。对于相同的总CPU能力,PostgreSQL通常会使用更少,更快的内核而不是许多更慢的内核。

直到缓存了较高百分比的活动数据集之后,添加RAM才能通常,与增加核心相比,更多的是物有所值。在拥有足够的缓存后,额外​​的RAM的好处就会减少,您最好提高CPU的性能。

有关此主题的更多详细信息,因为它与PostgreSQL有关,我认为有比Greg Smith的PostgreSQL 9.0 High Performance更好的资源。 (全部披露,我曾是该书的技术审稿人,但没有获得基于销售的财务收益。)

评论


嘿,我有书。您是否要参考任何特定的页面,章节或章节? (对于PostgreSQL透视图,BTW +1)

– RolandoMySQLDBA
2012年4月26日17:49



感谢您提供有关PostgreSQL的信息。我将检查这本书。 ;)

– Zenklys
2012年4月26日在17:51

第21-23页的好东西

– RolandoMySQLDBA
2012年4月26日17:56

与第21-23页相比,我可以看到您第二段的智慧。

– RolandoMySQLDBA
2012年4月26日18:00

#2 楼

从MySQL的角度严格来说,这是一个非常负载的问题


与数据库服务器相关的CPU频率?


虽然更快的CPU和主板性能很好,其他瓶颈也可以解决。这些瓶颈包括:


磁盘I / O
连接最大值
网络延迟
每个连接的查询性能

很少优势有所帮助,但是我不得不说“否”,因为CPU速度本身并不能改善上述瓶颈。毕竟,戴着敞篷降落伞或车轮上有800磅大猩猩的一级方程式赛车能做什么呢?


多核心CPU相关吗?


这完全取决于您运行的MySQL版本。 MySQL 5.1 InnoDB插件,MySQL 5.5和Percona Server的XtraDB都有必须正确配置的设置才能使InnoDB访问所有核心。这样做的真正动力来自这样一个事实,即我在过去的文章中讨论的某些旧版本的MySQL LEFT UNCONFIGURED比新版本要快:


如何正确执行MySQL为什么?
为什么mysql 5.5比5.1慢(linux,使用mysqlslap)
查询在某些较新的MySQL版本中运行很长时间
多核和MySQL性能

>因此,如果您不愿意配置InnoDB来访问所有CPU,那么拥有多个内核绝对不会给您带来任何好处。


RAM比CPU更重要吗?


哦,是的。 MySQL的内存配置需要为InnoDB和MyISAM设置



用于排序,联接,读取和临时表的每个连接选项
最大连接限制<批量插入操作
查询缓存

这些东西的组合要求太少或太多,MySQL就会再次咬你。 MySQL错误地为RAM配置了更快的CPU,只会让MySQL更快地咬你。

评论


好答案。我将检查所有这些链接,谢谢。

– Zenklys
2012年4月26日下午14:16

#3 楼




是的

简单来说,您需要数据库的RAM和IO性能(延迟+读取速度+写入速度)。

选择4核或6核还是2.5 GHz和3 GHz并没有太大关系(我假设您不必在具有32 GB RAM的P3-450或具有1GB RAM的最新Xeon之间进行选择)。 />
如果您受CPU的限制,那么还会遇到其他问题(设计不良,索引差,交换,非专用服务器等)

评论


感谢你的回答。 SSD是一个不错的选择吗?超过CPU功率?

– Zenklys
2012年4月26日在13:37

@Zenklys:很难说。您拥有什么大小的数据库?写量?读取负载? OLTP还是OLAP?等等

– gbn
2012年4月26日13:43

最大20-30 GB。读写比率为10:1,只有小数据,OLTP。

– Zenklys
2012年4月26日13:46



@Zenklys:在那种情况下,这并不重要。只需购买用于MySQL的RAM,以便尽可能多地缓存数据

– gbn
2012年4月26日13:59

不知道为什么这是公认的答案。由于它不考虑应用程序,工作负载或数据集的大小,因此很简单。 @kgrittn根据实际经验给出了更好的答案,并且对Postgres有了更好的操作理论的理解。

– dbenhur
2012年4月28日在0:24