负载平衡器,
多个/可伸缩的应用程序服务器
(目前)一台(单个)数据库服务器
前两个部分,我确实知道要寻找什么。但是数据库服务器呢?我应该寻找哪种硬件?
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
评论
好吧,它必须有一个。