5.5 系列 Sysbench OLTP 测试结果
几天前,MariaDB、MySQL 和 Percona 都发布了 5.5 版本服务器的新版本。因此,我决定再次运行 sysbench 并比较 OLTP 性能。测试候选版本如下:
- MariaDB-5.5.24,使用 XtraDB(默认)或 InnoDB
- MySQL-5.5.25
- Percona Server 5.5.24-26.0
为了进行基准测试,我使用了我们可靠的老机器 pitbull,它拥有 24 个 CPU 核心、24G RAM 和一个由 3 块 SAS SSD 组成的不错的 RAID-0 阵列。
基准测试使用的是 sysbench-0.5 多表 OLTP,使用了总计 10G 数据的 8 个表。InnoDB 缓冲池设置为 16G,InnoDB 日志组容量设置为 4G(MySQL 的最大值)。mysqld 进程被限制在 16 个核心上,sysbench 使用其余 8 个核心。
唯一的非标准调优是为了提高 I/O 可伸缩性:innodb_io_capacity = 20000 和 innodb_flush_neighbor_pages = none(针对 Percona Server 和 MariaDB/XtraDB)。请参阅我最近关于 I/O 调优的文章以了解解释。
只读 OLTP 的结果非常均衡。此图显示了中位吞吐量
响应时间也非常平稳(图中显示的是 99% 分位数,意味着最多有 1% 的请求慢于此值)
事实上,其表现显示出几乎完美的伸缩性:在最多 16 个线程(= 分配给 mysqld 的 CPU 核心数)时,响应时间保持不变。在更高的并发下,我们在双对数图上看到一条直线。
对于读写 OLTP,如果我们先看每秒事务数图表,情况看起来非常相似
当我们再次查看响应时间(99% 分位数)时,情况发生了变化。基于 InnoDB 的服务器在接近 16 个客户端线程时,会因检查点机制导致严重的停顿
基于 XtraDB 的服务器由于更好的检查点算法,能够更好地处理写入负载。
结论:如果您的工作负载是偏重于只读的 OLTP,那么选择 MariaDB、MySQL 或 Percona Server 在性能上没有太大区别。因此,您可以根据其他因素做出决定:成本、附加功能(在 MariaDB 和 Percona Server 中)或您的内部技术知识。
基于 InnoDB 的服务器(MySQL,MariaDB 可选)显示出略高的吞吐量,但在高写入负载下会遭遇检查点停顿。MariaDB 在这方面提供了最高的灵活性,因为您可以在 XtraDB 和 InnoDB 之间进行选择。
免责声明:原始基准测试结果以及使用的脚本和配置文件都可以在 Launchpad 上的公共 mariadb-benchmarks 仓库中找到。那里还有额外的图表。
您使用的具体 sysbench 命令是什么?我想用我的设置进行测试。
请在此查看文件 run.sysbench:http://bazaar.launchpad.net/~ahel/maria/mariadb-benchmarks/files/head:/sysbench-runs/series06/