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 及其前身。说了这么多,现在来看结果!
客户端 | 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
Axel,10.1 版本是使用了 wsrep-patch 构建的吗?
这是我们的 10.1.8 源代码包,任何人都可以从 downloads.mariadb.org 下载。我没有应用任何补丁,而是直接用我的 标准基准测试构建脚本 构建的。
我记得 Oracle 宣布 5.7 版本的性能提升了 3 倍?我自己测试的结果和你的很相似,但我不知道我是不是应该采用不同的配置。你知道他们使用的设置吗?
Oracle 对于他们的基准测试平台(貌似是 40 核 80 线程,所以可能是 Intel?)或他们使用的具体配置选项不太爱谈论。但如果你能自己做基准测试,那就做吧!而且如果你有实际的工作负载,那比合成基准测试更好。
看起来像是使用 Intel E7s,具有 72 个 CPU 核心、144 个 CPU 线程,频率为 2.5GHz http://dimitrik.free.fr/blog/archives/2015/10/mysql-performance-yes-we-can-do-more-than-16m-qps-sql-on-mysql-57-ga.html
阅读双方的基准测试结果总是很有趣 :)
我也很希望看到 MariaDB 提供针对 Intel 架构优化的 RPM 二进制文件,而不仅仅是通用编译版本。在这个主要由 Intel 服务器主导的世界中,我很想知道这会如何改变性能 :)
你好
Oracle 宣布他们的优化器被重写了。那么这是导致性能下降的根本原因吗?
不太可能。这个简单的基准测试完全没有给优化器带来压力。
一个不给优化器带来压力的基准测试有多大用处?