在你读到我的上一篇文章关于 MariaDB 10.1 GA 性能的文章时,你可能会困惑我为什么对 MySQL 5.7 只字未提。原因有两个:首先,MySQL 在那时还不是 GA。其次,MySQL 在 Power8 上运行并不稳定。
这次,我会拿出一个比较基准来对比他们之间的性能差别。我选了一些比较普通的硬件,因为大多数用户将运行这样的主机。用的是一个OVH的SP-64主机。4核英特尔CPU,内存为64G。磁盘一般,但基准又是一个简化的只读OLTP往返内存的工作负载。
为了让事情更有趣,我加了最新的 MySQL 5.6。所以我们现在有4个对比:全新的 MySQL5.7 GA和它的前辈和全新 MariaDB 10.1 GA 和它的前身。就不再多说废话了,看结果。
对于那些更偏爱数字而非图表的同学:
clients | 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 性能更加优越。但我们能从这些数字中获取的信息远不止这些。让我们看看还能从这些数字中提取到什么内容:
clients | MariaDB 10.1 vs. MariaDB 10.0 | MySQL 5.7 vs. MariaDB 10.1 | MySQL 5.7 vs. 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 的27年6月5日慢得多。这个不幸的趋势也被其他人观察到了。 MariaDB 另一方面可以从 10.0.21 升级至 10.1.8。
在使用基准再次sysbench的。基准是使用单个一百万行的表。使用单个或多个表对这样一个小机器不会产生太大的差别。 my.cnf如下:
<br /> [mysqld]<br /> max_connections = 300<br /> table_open_cache = 600<br /> innodb_buffer_pool_size = 512M<br /> performance-schema = false<br /> secure_file_priv = /tmp<br />
[mysqld] max_connections=300 table_open_cache=600 innodb_buffer_pool_size=512M performance – schema = false secure_file_priv=/tmp |
注意:最后一行只对 MySQL 5.7 是有意义的。而倒数第二行(禁用性能模式)只对 MySQL 有意义。没错,请确保您禁用性能模式或压低 MySQL 的性能几个百分比。 MariaDB 默认情况下是禁用性能模式的。
用以测试的命令是这样的:
<br /> sysbench-0.5 –test=lua/oltp.lua –oltp-table-size=1000000 /<br /> –oltp-read-only=on –oltp_point_selects=1000 /<br /> –oltp_sum_ranges=0 –oltp_simple_ranges=0 /<br /> –oltp_order_ranges=0 –oltp_distinct_ranges=0 /<br /> –max-requests=0 –max-time=100 –num-threads=… run<br />
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 |