MariaDB 10.1 和 MySQL 5.7 在商用硬件上的性能

当你读过我之前关于 MariaDB 10.1 GA 性能的博客文章时,你可能想知道为什么我没有包含 MySQL 5.7 的任何数据。原因有两个:首先当时 MySQL 还不是 GA 版本,其次 MySQL 在 Power8 上运行不稳定。

今天我将带来一个比较基准测试。我为此选择了一些更接地气的硬件,因为这是我们大多数用户会运行的环境。具体来说,它是一台来自 OVH 的 SP-64 云机器。它有一个 4 核 Intel CPU 和 64G 内存。磁盘不是很高大上,但这个基准测试又是一个简化的、从内存中运行的只读 OLTP 工作负载。

为了让事情更有趣,我添加了最新的 MySQL 5.6。所以我们现在有 4 个竞争者:全新的 MySQL 5.7 GA 及其前身,以及全新的 MariaDB 10.1 GA 及其前身。说了这么多,现在来看结果!

simplified OLTP, QPS for MySQL and MAriaDB对于那些喜欢数字胜过图表的人

简化 OLTP – 每秒查询数
客户端 MariaDB 10.0.21 MariaDB 10.1.8 MySQL 5.6.27 MySQL 5.7.9
1 22166 22748 24456 21499
2 41220 42155 45314 40552
4 70850 72865 78024 69816
8 112328 118933 126892 112442
16 113645 119503 129029 112502
32 113572 119663 127780 112925
64 111003 117255 125526 110663
128 111015 116137 124158 108568
256 111232 115688 116337 102345

所以赢家是:MySQL 5.6.27!但从这些数字中还可以学到更多。让我们看看这些竞争者之间相对表现如何

相对结果
客户端 MariaDB 10.1 对比 MariaDB 10.0 MySQL 5.7 对比 MariaDB 10.1 MySQL 5.7 对比 MySQL 5.6
1 +2,6% -5,5% -12,1%
2 +2,3% -3,8% -10,5%
4 +2,8% -4,2% -10,5%
8 +5,9% -5,5% -11,4%
16 +5,2% -5,9% -12,8%
32 +5,4% -5,6% -11,6%
64 +5,6% -5,6% -11,8%
128 +4,6% -6,5% -12,6%
256 +4,0% -11,5% -12,0%

这次比较的惊人结果是,MySQL 5.7.9 不仅比 MariaDB 10.1.8 慢(我想你可能在 MariaDB 博客中预期会读到这一点),而且它也显著慢于 MySQL 5.6.27。这种不幸的趋势也已被人观察到。另一方面,MariaDB 从 10.0.21 提升到了 10.1.8。

基准测试详情

使用的基准测试工具还是 sysbench。该基准测试使用单表中的 100 万行数据。对于这样的小型机器,使用单表还是多表差别不大。my.cnf 配置如下:

[mysqld]
max_connections = 300
table_open_cache = 600
innodb_buffer_pool_size = 512M
performance-schema = false
secure_file_priv = /tmp

注意:最后一行仅对 MySQL 5.7 必要。倒数第二行(禁用 performance schema)仅对 MySQL 必要。没错,请确保禁用 performance schema,否则 MySQL 性能会再下降几个百分点。MariaDB 默认禁用 performance schema。

sysbench 命令行为:

sysbench-0.5 --test=lua/oltp.lua --oltp-table-size=1000000 
--oltp-read-only=on --oltp_point_selects=1000 
--oltp_sum_ranges=0 --oltp_simple_ranges=0 
--oltp_order_ranges=0 --oltp_distinct_ranges=0 
--max-requests=0 --max-time=100 --num-threads=... run