MySQL 数据库服务器需要更多 RAM 还是更多核心?

MySQL 数据库服务器需要更多 RAM 还是更多核心?

情况如下,我希望得到您的专业建议:

我目前有大约 2GB 的数据库,一年后可能会翻一番。我希望订购的专用数据库服务器具有最佳的服务器性能,该服务器将用作运行 WordPress、论坛和 mediawiki 的流量相当大的网站的后端。大多数数据库流量应该是只读的。

所以问题是,我真的需要超过 4GB 的 RAM 吗?我应该选择 8 核还是 4 核?哪一个更重要?

[编辑] 顺便说一句,最后以优惠价格买到了一台 8 核服务器,内存为 8 GB,所以我就买了。很高兴知道我将有很大的成长空间。

答案1

有趣的问题。请先尝试定义当前应用程序的瓶颈。根据您的描述和一些实践知识,我猜您有四个可能的瓶颈:

  • 网卡
  • 内存
  • 高清吞吐量
  • 中央处理器(速度)
  • CPU(核心)

现在 RAM 不再是问题,因为您的数据库只有 2G,您不仅可以缓冲所有键和索引,而且实际上如果您相应地调整 (MyISAM-) key_buffer 和/或 innodb_buffer_pool_cache 的大小,RAM 中整个数据库就有 2G!即使 RAM < dbsize,您也可能没问题,因为通常不会同时使用数据库的所有部分 (ymmv)。

当然,内存还用于内存表、排序和排序以及一些连接操作,因此您应该查看数据库执行的查询的复杂性,以及它是否返回非常大的结果集。我不知道,但我相信 wordpress 和 mediawiki 都不会在那里执行真正复杂的操作。所以只需获得适量的内存即可。

HD 是任何大型数据库的常见瓶颈,但您的数据库无论如何都可以缓存在 RAM 中,而且您说您主要进行读取操作,所以我会说:对于正常的大型数据库,经验法则是:HD 吞吐量是主要瓶颈,因此:1. 购买 HD,2. 不一定购买最快的,但要购买多个。对于您的情况,我会说:反正它们都缓存了。

至于核心:MySQL 确实可以利用多核,但它主要需要它们进行复杂的计算、过程程序以及排序和合并操作。像“从表中选择 *”或甚至从表中选择 *,其中...”这样的简单查询不会从更多核心中受益太多。许多连接将获得微小的好处。我猜你应该更喜欢更快的处理器而不是多核。

我认为您应该检查网卡是否是主要瓶颈,并考虑第二个(第三、第四……)网卡,这取决于主接口上的流量。

所以,总而言之,我会把钱花在(按顺序): - 多个网卡(如果这确实是一个瓶颈) - 一个快速的处理器 - 2 - 4 个核心 - 2-4G 内存,可以选择稍后插入 8G(无论如何比核心便宜) - 最好的磁盘子系统(你现在不需要太多,但它会帮助你以后扩展)

干杯,尼克。

答案2

正如 nikb 所述,了解您的应用程序非常重要,但在了解这一点之前,我建议遵循以下经验法则。

除非您只定期读取或写入数据库的一部分,否则再多的额外核心也无法比拟将所有数据库和辅助数据(索引等)放在内存中的性能优势。如果您有以下情况,额外的核心将非常有用:很多并发客户端访问您或您执行大量后台工作(如报告或索引)。

如果我是你,我会选择一款较新的基于 Intel 55xx 系列的双插槽服务器,并只购买一个 4 核、超线程处理器和 3 个 4GB DDR 内存模块(不要让别人卖给你 2/4/8 等,55xx 使用 3、6、9 等)。这样,你不仅可以在未来非常快速轻松地添加第二个相同的处理器,而且由于这些芯片与即将推出的 8 核芯片兼容,你可以随时更换最初购买的处理器。

希望这个对你有帮助。

答案3

Nikb 的建议很合理。还有一个需要考虑的方面:

您的应用程序/应用程序架构的实例可以访问多少 RAM(或 CPU 核心或磁盘系统)?

我看到过这样的情况:在一台拥有 14GB RAM 的四核服务器上,尽管 CPU 使用率低于 25%,RAM 使用率也很低,但应用程序运行速度非常慢。原来,应用程序引擎只能访问 1.5GB 的 RAM。尽管机器只受到轻微影响,但应用程序实例已达到最大容量。

相关内容