高并发场景下 MariaDB 10.4 与 MySQL 5.7 查询性能对比测试怎么做?

文章导读
在同时并发 1000 个连接的测试场景下,MariaDB 10.3 的响应时间比 MySQL 5.7 明显更优,性能提升可达 60%-200%,但 MariaDB 10.4.13 在迁移 3+GB 大型数据库后,特定查询性能可能出现缓慢问题(2020 年 5 月 22 日用户反馈)。
📋 目录
  1. 原因分析
  2. 测试环境搭建
  3. 性能测试执行
  4. 配置优化方案
  5. 注意事项
  6. 参考来源
A A

高并发场景下 MariaDB 10.4 与 MySQL 5.7 查询性能对比测试怎么做?

核心结论:在同时并发 1000 个连接的测试场景下,MariaDB 10.3 的响应时间比 MySQL 5.7 明显更优,性能提升可达 60%-200%,但 MariaDB 10.4.13 在迁移 3+GB 大型数据库后,特定查询性能可能出现缓慢问题(2020 年 5 月 22 日用户反馈)。

原因分析

MariaDB 与 MySQL 5.7 的基础架构相同,默认变量参数数据大同小异,但两者在高并发处理能力上存在差异。根据 2019 年 12 月 2 日的测试资料显示,默认 max_connections 值为 151,不适合高并发场景。关键差异在于:MySQL 修改 max_connections 到 2000 时必须同时修改 Linux 系统的 ulimit 参数(open files 默认 1024,需改为 65535),而 MariaDB 直接修改配置文件重启即可,这影响了高并发下的连接稳定性。

另外,根据 2026 年 1 月 9 日的性能基准测试,MariaDB 10.6 对比 MySQL 8.0 的测试中,MariaDB 平均 TPS 比 MySQL 高 12%,95% 请求响应时间 MariaDB 为 23ms,MySQL 为 31ms,在 800 并发时 MySQL 开始出现连接超时,而 MariaDB 在 1000 并发下仍能保持稳定响应。

测试环境搭建

步骤 1:硬件配置

参考 2017 年 11 月 8 日的 MySQL5.7 GR VS MariaDB10.1.19 Galera Cluster 性能压测,测试硬件配置为:R720 服务器,64G 内存,RAID10(SAS 15000 转),BP 缓冲池设置为 30G。

步骤 2:软件版本选择

根据 2023 年 11 月 11 日的安装指南,MySQL 5.7.36 源码编译安装需要以下依赖包:gcc、gcc-c++、cmake、bison、bison-devel、zlib-devel、libcurl-devel、libarchive-devel、boost-devel(最低要求 1.59 版)、ncurses-devel、gnutls-devel、libxml2-devel、openssl-devel、libevent-devel、libaio-devel、perl-Data-Dumper。

步骤 3:测试工具准备

使用 sysbench 0.5 进行性能压测,测试数据集为 10 张表 100 万行数据,并发线程数设置为 128。

性能测试执行

测试场景 1:并发连接压力测试

使用 mysqlslap 工具进行测试,命令如下:

mysqlslap -a -c 1000

高并发场景下 MariaDB 10.4 与 MySQL 5.7 查询性能对比测试怎么做?

根据 2021 年 1 月 19 日的测试结果,在同时并发和分别并发 1000 个连接的情况下,MariaDB 的响应时间明显优于 MySQL。

测试场景 2:OLTP 基准测试

模拟 100 个并发用户执行混合读写操作(70% 读 +30% 写),根据 2026 年 1 月 9 日的测试数据,关键指标包括 TPS(每秒事务数)、95% 请求响应时间、长时间运行时的性能波动。

测试场景 3:主从复制延迟测量

搭建 1 主 2 从架构,测试数据同步延迟。小事务场景下两者延迟都在毫秒级,但当主库执行大批量 UPDATE 时,根据测试数据显示 MySQL 的从库延迟增长更快,MariaDB 的并行复制机制在 IO 密集型场景优势明显。

配置优化方案

MySQL 5.7 配置调整

1. 修改系统 ulimit 参数:

vim /etc/security/limits.conf

* soft nofile 65535

* hard nofile 65535

高并发场景下 MariaDB 10.4 与 MySQL 5.7 查询性能对比测试怎么做?

2. 修改 MySQL 配置文件:

vim /etc/my.cnf

[mysqld]

max_connections=2000

3. 重启服务:systemctl restart mysqld

MariaDB 配置调整

MariaDB 直接修改参数重启即可,无需调整系统 ulimit:

vim /etc/my.cnf

[mysqld]

max_connections=2000

systemctl restart mysqld

高并发场景下 MariaDB 10.4 与 MySQL 5.7 查询性能对比测试怎么做?

验证修改成功:SHOW VARIABLES LIKE 'max_con%'; 应显示 max_connections=2000

注意事项

1. 大数据库迁移风险:根据 2020 年 5 月 22 日的用户反馈,将大型 (3+GB) 数据库从 MySQL 迁移到 MariaDB 10.4.13 后,在特定查询性能方面可能出现问题,即使对数据库进行了分析、优化、重建,仍需谨慎测试。

2. JSON 功能差异:根据 2024 年 9 月 26 日的功能对比,从 5.7 版本开始 MySQL 支持原生 JSON 数据类型,而 MariaDB 没有提供这一增强功能,仅为 JSON 定义了一个别名(实际上是 LONGTEXT 列),如果业务大量使用 JSON 操作,MySQL 5.7 的优化器表现更好。

3. 内存占用差异:根据 2026 年 1 月 9 日的 24 小时监控数据,MySQL 平均内存使用比 MariaDB 多占用 15%-20%,在资源受限环境下需考虑这一因素。

4. 高并发阈值:测试显示在 800 并发时 MySQL 开始出现连接超时,而 MariaDB 在 1000 并发下仍能保持稳定响应,建议根据预期并发量选择合适的数据库。

5. 编译安装内存要求:根据 2023 年 11 月 11 日的安装指南,MySQL 5.7 编译安装时虚拟机内存最少 4G,否则会出现错误,编译命令中make -j 16的 16 是 CPU 核数,需根据实际硬件调整。

参考来源

来源:CSDN 博客 - 浅谈 MYSQL5.7 以及 MariaDB10.3 小差异(2021 年 1 月 19 日、2019 年 12 月 2 日)

来源:阿里云开发者社区 - MySQL5.7 GR VS MariaDB10.1.19 Galera Cluster 性能压测(2017 年 11 月 8 日)

来源:技术博客 - MariaDB vs MySQL:性能基准测试与选型指南(2026 年 1 月 9 日)

来源:阿里云开发者社区 - 使用 MYSQL Report 分析数据库性能(2025 年 9 月 12 日)