MySQL 5.6 和 MariaDB-10.0 的性能比较测试

时间 2013-02-14 10:11:34  开源中国

Oracle 刚刚发布了 MySQL 5.6.10 GA 版本,所以是时候更新下之前的性能测试数据了,此次的测试包括以下几个版本:

  • MySQL-5.5.29
  • MySQL-5.6.10
  • MariaDB-5.5.28a
  • MariaDB-10.0.1

此次测试还保留了 5.5 版本是为了进行回归测试。之前我们经常发现新版本在性能上反倒而落后的情况。

此次测试在不同的环境下执行,主要的不同是没用 SSD 而是使用高性能的带 512 兆 battery-backed 缓存的 RAID-5 存储。此外测试的机器具有 16 核,其中 12 核运行 mysqld ,另外 4 核运行 sysbench。

测试使用 sysbench-0.5 OLTP ,包好 8 个表和 10G 的数据。InnoDB 的缓冲池大小是 16G,日志 4G。不同的磁盘系统要求不同的 InnoDB 配置:

  • innodb_io_capacity = 1000 (was 20000 for SSD)
  • innodb_flush_neighbors = 1 (was 0 for SSD)

下面是测试结果,首先是 OLTP 只读:

非常奇怪,MySQL 5.6 在此轮测试中居然表现异常。在 8 个线程时相差不大,在 16 个线程时变现最佳。但更高的并发下性能就迅速下降,甚至比 MySQL 5.5 还差。而 MariaDB 10.0 则比 MariaDB 5.5 表现上要差一些,但没那么明显。

而响应时间图表则表示比较好而且平滑:

MySQL-5.6 和 MariaDB-10.0 看起来要稍微好一些,意味着它们能更好的分配 CPU 周期。

声明: 此次测试没有使用线程池。Oracle 的线程池实现已经闭源了,因此没法进行测试和使用,如果在 MariaDB 上使用线程池的话就显得有点不公平。

如果你想了解线程池对性能的影响,可查看之前的两篇文章:

第二个测试:OLTP 读写测试

这个图跟前一个测试差不多,MySQL 5.6 和 MariaDB 10.0 在性能表现上都比 5.5 版本要下滑不少,在高负载的情况下,下滑了 10% 左右。

这是一个人所共知的事实,MySQL 5.5 在高负载下因为同步的 flush 操作导致的性能下滑。

响应时间图相对要好一些:

这是一个好消息,5.5 版本在 64 个线程或者更多线程的情况下响应时间差了很多。而 MySQL 5.6 和 MariaDB 10.0 的适应性 flush 算法似乎工作良好。

这里还有一个问题:如果你使用多个缓冲池实例,你将会看到写操作延迟更厉害。上面的结果中,只读测试使用了 16 个缓冲池,而读写测试只用了 1个。

结论:

  • MySQL-5.6 性能表现比前一个版本要差,特别是高并发的情况下。这与 Oracle 发布的测试结果不符。我只能推测为什么结果差异那么大,我猜是 Oracle 闭源的线程池以及 Oracle 在更大的机器上进行测试导致。
  • 使用单个缓冲池情况下不需要担心写延迟的问题。同时 MySQL 5.6 允许高达 512G 的 redo 日志可降低同步 flush 操作。

此次测试的脚本可通过下面地址访问: 
http://bazaar.launchpad.net/~ahel/maria/mariadb-benchmarks/revision/20

欢迎大家重做这个测试并与我们分享测试结果。

MySQL 5.6 和 MariaDB-10.0 的性能比较测试的更多相关文章

  1. SQLServer2012 和 MariaDB 10.0.3 分页效率的对比

    1. 实验环境      R910服务器, 16G内存 SqlServer 2012   64bit MariaDB 10.0.3   64bit  (InnoDB) 2. 实验表情况 rtlBill ...

  2. [mysql] MariaDB 10.0.10 GTID复制

    一:概念理解:    1.TID:Transaction ID,即Mysql服务器的事务ID号. 2.GTID:Global Transaction ID,全局事务ID,在整个主从复制架构中任何两个事 ...

  3. Cenos7 编译安装 Mariadb Nginx PHP Memcache ZendOpcache (实测 笔记 Centos 7.0 + Mariadb 10.0.15 + Nginx 1.6.2 + PHP 5.5.19)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  4. CentOS7 编译安装 Mariadb (实测 笔记 Centos 7.0 + Mariadb 10.0.15)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  5. MariaDB——(三) MariaDB 10.0.15 standard replication主从复制搭建

    最近看了一下MariaDB的常规复制章节,就按部就班的搭建了一下最简单的主从复制.需要的硬件环境很简单(在虚拟机VMware中搭建): 1:两台server:Master: 192.168.6.133 ...

  6. MariaDB——(二) MariaDB 10.0.15 日志文件—undo 日志

          日志的记录和维护是数据库中相当重要的内容,写这篇文章和后面几篇文章作为学习官网文档的笔记.MariaDB数据库日志可分为二进制日志.查询日志.错误日志.myISAM表日志.relay日志和 ...

  7. PostgreSQL 10.0 preview 性能增强 - 分区表性能增强(plan阶段加速)

    标签 PostgreSQL , 10.0 , 分区表 , 子表 , 元信息搜索性能增强 背景 PostgreSQL 10.0 增强了分区表的子表搜索性能,对于涉及分区表包含子表特别多的QUERY,可以 ...

  8. centos6.5环境使用RPM包离线安装MariaDB 10.0.20

    1. 进入MariaDB官网下载MariaDB需要的RPM包 2. 使用下载软件下载所需要的RPM包, 总共4个, 并上传到CentOS主机指定目录. MariaDB-10.0.20-centos6- ...

  9. MariaDB——(一)CentOS 6.5 下 MariaDB 10.0.15 YUM 安装

    1.配置yum源: 在MariaDB官网提供了yum源在线生成器,选择合适的系统和版本后,会生成所需的repo文件内容: 在/etc/yum.repos.d/目录下新建一个MariaDB.repo文件 ...

随机推荐

  1. 普通委托到泛型委托到Linq

    private delegate bool delTest(int a); private void button1_Click(object sender, EventArgs e) { var a ...

  2. Linux环境下的编译,链接与库的使用

    参考博客: http://www.cnblogs.com/qytan36/archive/2010/05/25/1743955.html http://m.blog.csdn.net/article/ ...

  3. Mybatis 的日志管理

    Mybatis通过日志工厂提供日志信息,Mybatis内置的日志模版是log4j,commons.log,jdk log也可以通过slf4j简单日志模版结合log4j使用日志信息输出.具体选择哪个日志 ...

  4. JavaScript高级程序设计之原型对象

    构造函数.原型对象.构造器是一体的关系,同时产生: 实例中的隐藏属性__proto__指向原型对象: 原型对象是这四种关系的纽带. 原型对象是动态的,不论在何处变化,实例中可以立即体现出来. var ...

  5. 基于swift语言iOS8的蓝牙连接(初步)

    看过一些蓝牙App的事例,大体上对蓝牙的连接过程进行了了解.但是开始真正自己写一个小的BLE程序的时候就举步维艰了.那些模棱两可的概念在头脑中瞬间就蒸发了,所以还是决定从最基本的蓝牙连接过程进行.这里 ...

  6. [转]Valgrind简单用法

    [转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...

  7. 5.防止FPGA设计中综合后的信号被优化

    随着FPGA设计复杂程度越来越高,芯片内部逻辑分析功能显得越来越重要.硬件层次上的逻辑分析仪价格十分昂贵,而且操作比较复杂.目前,FPGA芯片的两大供应商都为自己的FPGA芯片提供了软件层面上的逻辑分 ...

  8. 【转载】set_input_delay和set_output_delay的选项-max和-min的讨论

    转自:http://www.cnblogs.com/freshair_cnblog/archive/2012/09/12/2681060.html 一.存在背景分析 文档的说法是,set_input_ ...

  9. DSP28335的SPI发送

    #include "DSP2833x_Device.h"#include "DSP2833x_Examples.h"unsigned char table[]= ...

  10. PB中无法插入ole控件,解决办法

    cmd /c for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %icmd /c for %i in (%windir%\system32\ ...