WordPress数据库性能对决:MySQL,MariaDB,Percona

WordPress 要求您使用 MySQL 兼容数据库作为其数据库后端。过去,您可以自信地选择 MySQL 并继续生活,但是在2020年,选择并不是那么简单。使用 MySQL,MariaDB 和 Percona 作为有吸引力的选项,您如何知道选择哪个?

选择数据库并不总是与性能有关,但就本文而言,这将是一场数据库之间的性能对决!

对于这一系列测试,我们无需特别调整即可立即测试数据库性能。专业的数据库管理员很有可能使每个数据库的性能更高,但是大多数托管 WordPress 的人不是 DBA。关于缓存,没有启用。因为我们想测试数据库性能,而不是缓存性能。

测试了什么?

WordPress 主机是 DigitalOcean CPU 优化的 Droplet,具有16个 vCPU(专用超线程)和 32 GB RAM。选择了这种机器怪物,以便我们可以确定 Nginx + PHP-FPM 并不是造成任何瓶颈的原因。对 PHP-FPM 配置进行了细微调整,以充分利用所有16​​个 vCPU。

数据库主机是具有4个 vCPU(专用超线程)和 8GB RAM 的 DigitalOcean CPU 优化液滴。选择 CPU 优化的 Droplet 是因为我们不希望测试受共享 CPU 资源的支配。

每次部署都在 DigitalOcean 的 SFO2 区域中,WordPress 服务器通过内部专用网络与数据库进行通信。流量产生节点部署在 DigitalOcean 的 NYC3 数据中心中,并通过公共 Internet 进行通信。

软件版本如下:

  • Percona Server for MySQL 8.0.16-7
  • MariaDB 10.4.8-GA
  • MySQL 8.0.18

运行了哪些测试?

对于每个经过测试的数据库,我们使用以下参数进行了负载测试:

  • 500个并发用户
  • 2 req / s加速
  • 30分钟的持续时间

这里的目标不是使数据库瘫痪,而是查看它在持续的重负载下的性能如何,但又没有那么重以至于无法崩溃。

左:WordPress(Nginx + PHP-FPM),右:MySQL

MariaDB WordPress性能

在 2009 年 MySQL 收购 Oracle 的过程中,核心开发人员普遍担心 Oracle 最终会将 MySQL 推向世界(类似于 Oracle 的业务模式)。在此之前,创建了一个名为MariaDB 的 MySQL GPL 分支。

MariaDB 是开源的并且正在积极开发中。但是如何承受我们的 WordPress 负载测试?让我们找出答案。

首先,我们来看一下每秒的请求和失败次数。

〜379 req / s ,有周期性错误

从上面的结果可以看出,随着时间的推移,性能会很好地扩展,最终达到约 379 req / s 的峰值。我们看到了与数据库有关的定期错误(数据库中的 vCPU 几乎完全饱和),但是没有什么太疯狂的了。接下来,让我们看看响应时间如何。

中值响应时间约为190ms

在重负载下由 MariaDB 支持时,WordPress 的响应时间中位数保持显着一致。您可以看到,到测试结束时,平均值正在缓慢攀升,但尚无客户注意到的东西。

在500毫秒内完成请求的99%

响应时间分布比中值响应时间更有趣。90%的请求在300毫秒内完成,而99%的请求在500毫秒内完成。总体而言,无需配置即可立即获得 MariaDB 的性能。

Percona WordPress性能

MySQL 的另一个开源分支 Percona 始于2006年,在过去12年来一直在 MySQL 之上稳定地提供增值功能和企业支持。凭借所有积累的经验,Percona 如何进行评估?

每秒约320个请求,每秒约3个错误

总体而言,Percona WordPress 的性能相当不错。不如 MariaDB 好,但没有什么值得嘲笑的。一件有趣的事情是,一旦请求量通过〜200个请求/秒,大多数测试中的错误率就保持一致。让我们看看响应时间图是否添加到了故事中。

〜450ms中值响应时间

这里的数据实际上很有趣。直到开始出现一致错误之前,Percona 的响应时间与 MariaDB 相当。之后,它增加了一倍以上,并在其余测试中保持这种状态。

99%的请求在约550毫秒内完成

响应时间分布与响应时间图讲类似的故事。第50个百分位与第99个百分位之间的差异表明,在整个测试中,性能非常一致,只是不如 MariaDB 好。

MySQL WordPress性能

最后但并非最不重要的(好吧……)是 MySQL 。自1994年以来一直存在,现在归 Oracle 所有。在最新版本中,有很多很棒的功能,例如窗口功能和更多 JSON 功能,可与 PostgreSQL 竞争。因此,让我们看看它是如何做到的。

295个请求/秒,3-4个错误/秒

MySQL 的运行轨迹与 Percona 类似:MySQL 的运行速度超过 200 req / s 后,在整体上表现不错,但出现了一系列小但一致的错误。还要注意,它从未达到高于 300 req / s 的速度,而 MariaDB 和 Percona 都做到了。

中值响应时间500ms

MySQL 响应时间图的形状几乎与 Percona 相同,一旦 vCPU 开始饱和,速度将慢50ms。响应时间分布中的详细外观讲述了一个类似的故事。

99%的请求在875毫秒内完成

响应时间分布是您可以看到 Percona 和 MySQL 稍有不同的地方。在第99个百分位数处,MySQL 返回875毫秒,而 Percona 更像是550毫秒。通常,根据响应时间图的外观,分布与预期的分布相匹配。

结论

MariaDB 开箱即用的数字使其看起来像是这里的明显赢家。与 Percona 和 MySQL 相比,它的默认设置就可以达到较为理想的性能。这并不是说您无法将 Percona 或 MySQL 调整为优于 MariaDB,而是仅通过零配置更改获得更高的性能。

Req / sError / sMed. Response Time99% Dist.
MariaDB379~1190ms500ms
Percona3203450ms550ms
MySQL2953500ms875ms

PS:简单来说就是如果你不懂得如何最优配置你的数据库,那就无脑安装 MariaDB 就可以了……

给TA打赏
共{{data.count}}人
人已打赏
VPS教程

宝塔面板安装第三方 PHP 扩展 libsodium sodium

2020-10-19 13:34:06

WordPress教程

解决 WordPress 启用 CDN 以后无法获取用户真实 IP

2020-8-31 14:36:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索