WordPress 数据库性能:Percona 服务器 vs MySQL w/o InnoDB

Posted

技术标签:

【中文标题】WordPress 数据库性能:Percona 服务器 vs MySQL w/o InnoDB【英文标题】:WordPress database performance: Percona server vs MySQL w/o InnoDB 【发布时间】:2013-03-25 22:01:10 【问题描述】:

我不想主观地问“哪个 DBMS 最好?”或“这两者中哪个 DBMS 更好?”。这不一定是***的辩论。

相反,我欢迎任何基准测试结果或特定经验,当涉及到一个特定标准 - 性能 - 尤其是对于一个特定应用程序:WordPress。

我知道 WordPress 不使用 InnoDB,因此在 mysql 中禁用 InnoDB 可以加快速度。另一方面,Percona 是一个 MySQL 的 fork,它用 XtraDB 代替了 InnoDB,并声称高效、高性能。

在运行 WordPress 时,它们的性能如何? (无需竞争......据我所知,两者都可能看起来非常好)

我曾尝试在 Google 上进行一般搜索,但没有遇到过智能讨论,更不用说性能基准测试了。

如果这里有任何专家可以分享他们的经验,将不胜感激。非常感谢!

并且请对自己保持任何自鸣得意、冷嘲热讽之类的“你为什么不尝试”。如果可以的话,我会的。 Stack Overflow 的目的是分享专业知识并互相学习,而不是自己做所有事情。

【问题讨论】:

据我在不同的 Post os percona 中阅读,有些人在 AMAZON AC2 服务器上使用 percona 而不是标准 mysql 获得了更好的数据库性能。我认为 XTradb 是一个可选的安装,可以选择替换 innodb。 percona 服务器本身添加了一些性能监控功能,以便您可以调整服务器本身。 这里作者说他使用 percona 性能更好,但他没有说他使用什么 db 引擎:mysqlperformanceblog.com/2011/08/04/… 【参考方案1】:

这个问题不是“MySQL vs. Percona Server”,而是“MyISAM vs. InnoDB/XtraDB”。它们都有自己的性能特征,适合您的存储引擎很大程度上取决于您的工作负载。大多数 Wordpress 网站的流量都很低并且主要是读取,因此只要您的数据适合您的缓冲池(对于 InnoDB/XtraDB)或密钥缓存(对于 MyISAM),我预计性能不会太不同。

在 Wordpress 数据库优化方面做了很多工作,我可以告诉您,您的 Wordpress 网站的性能更多地取决于您的硬件类别和您选择的插件。

您应该使用缓存插件,这样您就可以避免大量的数据库读取请求 您应该避免使用会发出昂贵查询的插件(遗憾的是,这涵盖了大多数插件) 您应该修剪您的 cmets(通常 cmets 是 99% 以上的垃圾邮件,因此被标记为垃圾邮件的那些只是坐在您的数据库中占用空间) 您的主机应该有足够的 RAM 用于热数据集以适应内存

如果您真的想详细了解 MyISAM 与 InnoDB/XtraDB,可以查看以下链接:

http://www.mysqlperformanceblog.com/2009/01/12/should-you-move-from-myisam-to-innodb/ http://www.rackspace.com/knowledge_center/article/mysql-engines-myisam-vs-innodb

因此,要做出更长的回答,您需要在生成生产流量后分析您的 MySQL 实例。我知道你说你不能,但是......这个问题有点像我问“什么发型最适合我”,而不包括图片。

【讨论】:

【参考方案2】:

Wordpress 可以很好地使用 InnoDB(或 XtraDB)。我使用 MyISAM、InnoDB 和 XtraDB 中的任何一个为大规模托管 WordPress 的网站进行过咨询和培训。

WordPress 3.5.1 创建表而不指定存储引擎。因此,它尊重您使用的任何 MySQL 实例上的默认存储引擎。从 MySQL 5.5(约 2010 年 12 月)开始,默认存储引擎是 InnoDB。我测试了在运行 MySQL 5.6.10 的虚拟主机上安装 WordPress,它使用 InnoDB 存储引擎创建表。

我没有任何基准可以分享,但无论如何这些基准的用处都是有限的,因为性能在很大程度上取决于给定的硬件、流量负载和其他因素。

像 WordPress 这样的 CMS 往往偏重于只读查询。这是 InnoDB 应该带来好处的地方,因为它缓存数据页和索引。 MyISAM 只缓存索引,并依赖文件系统缓存来保存数据。

因此,让 WordPress 运行良好的关键是分配足够的 innodb_buffer_pool_size 来保存所有表的数据和索引。 WordPress 网站的数据大小(即使是包含数百篇文章的网站)通常不会很大,因此您可能只需要几 GB 的缓冲池即可将所有频繁请求的数据保存在缓冲区中。一旦数据和索引页面填充了 InnoDB 缓冲池,99.9% 的查询将在 RAM 之外提供服务,并且该站点将具有出色的性能。

与任何缓存系统一样,性能的真正杀手是当您的“热”数据大于缓存时,会强制查询产生磁盘 I/O。单个磁盘 I/O 值得几千次 RAM 访问,因此您希望尽可能完全地从 RAM 中提供内容。

XtraDB 的改进旨在帮助 Threads_running 数量增加或缓冲池变大(例如几十 GB)。单个 WP 站点不太可能如此频繁地使用 MySQL 或 Percona Server,以至于这些改进只会带来一点点优势。除非您要像托管公司一样在给定服务器上托管数百个 WP 网站。

您甚至可能会发现瓶颈不再是数据库,然后您需要专注于前端优化。

【讨论】:

以上是关于WordPress 数据库性能:Percona 服务器 vs MySQL w/o InnoDB的主要内容,如果未能解决你的问题,请参考以下文章

mysql5.6加载percona版audit.log插件性能损耗压测

Percona Server 教程

MySQL Study之--Percona Server版本号

Ubuntu Server 16.04 安装 Percona Server 5.7 来代替 MySQL 或 MariaDB详细教程

优化系列 | MySQL 5.6.10 vs Percona 5.6.6之TPCCC性能测试

CentOS 7.2 安装配置 Percona Server