MariaDB 10.1 每秒可处理 100 万次查询
MariaDB 10.1 不仅包含大量新功能,还在性能上进行了优化以提供顶级表现。在海量多线程硬件上的可伸缩性方面取得了最大的改进。
以下数字显示了在 MariaDB-10.1.8 上运行简化版 sysbench OLTP 基准测试与 MariaDB-10.0.21 相比的吞吐量
OLTP 客户端数 | MariaDB-10.0.21 | MariaDB-10.1.8 | 增长 |
---|---|---|---|
160 | 398124 | 930778 | 135% |
200 | 397102 | 1024311 | 159% |
240 | 395661 | 1108756 | 181% |
320 | 396285 | 1142464 | 190% |
基准测试详情
该基准测试是 sysbench-mariadb(sysbench 主干版本,包含一个用于改进随机数生成器可伸缩性的修复),将 OLTP 简化为每事务执行 1000 次点查询。数据集包含 20 个表中的 100 万行数据。可以使用更少的表,但如果少于 4 个表,性能会因表定义缓存的热点而有所下降。
这是本次测试使用的 my.cnf 配置
[mysqld]
max_connections = 400
table_open_cache = 800
query_cache_type = 0
innodb_buffer_pool_size = 512M
innodb_buffer_pool_instances = 10
innodb_adaptive_hash_index_partitions = 20
这是 sysbench 命令行
sysbench-mariadb --test=lua/oltp.lua --oltp-tables-count=20
--oltp-table-size=50000 --num-threads=... --oltp-read-only=on
--oltp-point-selects=1000 --oltp-distinct-ranges=0
--oltp-simple-ranges=0 --oltp-sum-ranges=0 --oltp-order-ranges=0
--max-time=100 --max-requests=0 run
硬件 / 软件详情
该基准测试运行在 IBM “Firestone” S822LC Power8 服务器上,该服务器配备 2 个插槽、20 个核心和 8 路 SMT(共 160 个硬件线程)。该机器运行 PowerKVM 3.1,并在 KVM 内部运行 Ubuntu 14.04.3 LTS (ppc64le) 访客操作系统。MariaDB-10.1.8 和 sysbench-mariadb 是使用 IBM 的 Advance Tool Chain 8.0 编译器本地编译的。
最后
MariaDB 源代码中导致这些令人印象深刻的性能提升的更改是 MariaDB 移植到 Power8 的一部分。下面列出了一些主要的更改:
MDEV-6089 MySQL WL#7305 “使用无锁哈希改进 MDL 可伸缩性”
MDEV-7004 合并来自 10.0-power 的可伸缩性修复
MDEV-7324 表定义缓存的无锁哈希
IBM 发表了多份关于 MariaDB 及其在 Power8 上与英特尔硬件相比性能的白皮书。
MySQL 5.7 也提供了 3 倍的性能提升。上述优势是 MariaDB 独立工作的结果,还是从主流 MySQL 代码合并而来?
MariaDB 从 MySQL 回合改进/功能,并开发自己的功能。根据上面列出的三个 JIRA 链接,看起来其中一个是从 Oracle 回合的,另外两个是 MariaDB 内部的更改。