news 2025/12/19 20:51:20

MySQL 压测实战:sysbench 从入门到精通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 压测实战:sysbench 从入门到精通

目录

      • 一、sysbench 基础介绍
        • 1. 安装 sysbench
          • 方式 1:包管理器安装(简单)
          • 方式 2:源码编译安装(最新版本)
      • 二、sysbench 压测 MySQL 核心流程
        • 1. 核心参数说明(通用)
        • 2. 提前准备 MySQL 环境
      • 三、常用压测场景实战
        • 场景 1:读写混合压测(oltp_read_write)
          • 步骤 1:准备测试数据
          • 步骤 2:执行压测
          • 步骤 3:清理测试数据(压测完成后)
        • 场景 2:其他常用场景(仅替换核心参数)
      • 四、压测结果解读(核心指标)
      • 五、压测注意事项
      • 总结

你想全面了解如何使用 sysbench 对 MySQL 进行压测,包括安装、常用压测场景、参数配置和结果解读,我会从基础到实战一步步给你讲清楚。

一、sysbench 基础介绍

sysbench 是一款开源的、跨平台的多线程性能测试工具,支持对 CPU、内存、磁盘 I/O、数据库(主要是 MySQL)等进行压测,尤其在数据库压测中应用广泛,能模拟真实的读写负载,评估数据库的性能极限。

1. 安装 sysbench

环境说明:以 Linux(CentOS 7/8 或 Ubuntu)为例,推荐安装 1.0 及以上版本(新版语法更清晰)。

方式 1:包管理器安装(简单)
# CentOS/RHELyuminstall-y epel-release yuminstall-y sysbench# Ubuntu/Debianaptupdateaptinstall-y sysbench
方式 2:源码编译安装(最新版本)
# 安装依赖yuminstall-ymakeautomake libtool pkgconfig libaio-devel mysql-community-develgit# 克隆源码gitclone https://github.com/akopytov/sysbench.gitcdsysbench# 编译安装./autogen.sh ./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib64/mysqlmake-j$(nproc)makeinstall# 验证安装sysbench --version

二、sysbench 压测 MySQL 核心流程

sysbench 压测 MySQL 分为 3 个核心步骤:准备测试数据执行压测清理测试数据

1. 核心参数说明(通用)

先熟悉常用的连接和压测参数,后续所有场景都会用到:

参数说明
--mysql-hostMySQL 服务器地址(默认 127.0.0.1)
--mysql-portMySQL 端口(默认 3306)
--mysql-user连接 MySQL 的用户名
--mysql-password连接 MySQL 的密码
--mysql-db测试用的数据库名(需提前创建)
--table-size每个测试表的行数(核心参数,决定数据量)
--tables测试表的数量
--threads并发线程数(模拟并发用户数)
--time压测持续时间(秒,默认 10)
--report-interval每隔几秒输出一次压测进度(秒)
2. 提前准备 MySQL 环境
-- 1. 创建测试数据库CREATEDATABASEIFNOTEXISTSsysbench_test;-- 2. 创建有足够权限的用户(避免用 root 压测)CREATEUSER'sysbench'@'%'IDENTIFIEDBY'Sysbench@123';GRANTALLPRIVILEGESONsysbench_test.*TO'sysbench'@'%';FLUSHPRIVILEGES;

三、常用压测场景实战

sysbench 对 MySQL 的压测主要有 4 个核心场景:只读(oltp_read_only)只写(oltp_write_only)读写混合(oltp_read_write)纯插入(oltp_insert),以下以最常用的「读写混合」为例讲解完整流程。

场景 1:读写混合压测(oltp_read_write)
步骤 1:准备测试数据
sysbench oltp_read_write\--mysql-host=127.0.0.1\--mysql-port=3306\--mysql-user=sysbench\--mysql-password=Sysbench@123\--mysql-db=sysbench_test\--table-size=1000000\# 每个表 100 万行--tables=10\# 共 10 个表(总数据量 1000 万行)--db-driver=mysql\prepare# 准备数据的核心指令
  • 执行后,sysbench 会在sysbench_test库中创建 10 张名为sbtest1~sbtest10的测试表;
  • 数据量根据服务器配置调整:低配服务器(1C2G)建议table-size=100000,高配服务器(8C16G)可设table-size=5000000

步骤 2:执行压测
sysbench oltp_read_write\--mysql-host=127.0.0.1\--mysql-port=3306\--mysql-user=sysbench\--mysql-password=Sysbench@123\--mysql-db=sysbench_test\--table-size=1000000\--tables=10\--threads=64\# 64 并发线程(根据 CPU 核心数调整,一般为 CPU 核心数的 2 倍)--time=60\# 压测持续 60 秒--report-interval=10\# 每 10 秒输出一次进度--db-driver=mysql\run# 执行压测的核心指令
步骤 3:清理测试数据(压测完成后)
sysbench oltp_read_write\--mysql-host=127.0.0.1\--mysql-port=3306\--mysql-user=sysbench\--mysql-password=Sysbench@123\--mysql-db=sysbench_test\--tables=10\--db-driver=mysql\cleanup# 清理数据的核心指令
场景 2:其他常用场景(仅替换核心参数)
  • 只读压测:将oltp_read_write替换为oltp_read_only
  • 只写压测:替换为oltp_write_only
  • 纯插入压测:替换为oltp_insert
  • 删改混合压测:替换为oltp_deleteoltp_update_index

四、压测结果解读(核心指标)

压测结束后会输出详细结果,重点关注以下核心指标(以读写混合压测为例):

SQL statistics: queries performed: read: 103200 # 读请求总数 write: 29486 # 写请求总数 other: 14743 # 其他请求(如事务提交) total: 147429 # 总请求数 transactions: 7371 (122.83 per sec.) # 核心:TPS(每秒事务数) queries: 147429 (2456.60 per sec.) # QPS(每秒查询数) ignored errors: 0 (0.00 per sec.) reconnects: 0 (0.00 per sec.) General statistics: total time: 60.0010s # 实际压测时长 total number of events: 7371 # 总事务数 total time taken by event execution: 3836.1251s # 所有线程执行事件的总耗时 response time: min: 19.02ms # 事务最小响应时间 avg: 520.43ms # 事务平均响应时间 max: 2980.15ms # 事务最大响应时间 95th percentile: 1200.50ms # 95%事务的响应时间(重点关注)
  • 核心指标:TPS(每秒事务数)、QPS(每秒查询数)越高越好;95th percentile(95%响应时间)越低越好;
  • 参考标准:8C16G 服务器 + MySQL 8.0,读写混合压测 TPS 一般能达到 1000+,QPS 20000+,95% 响应时间 < 1s 为正常。

五、压测注意事项

  1. 压测环境隔离:不要在生产库直接压测,单独搭建和生产配置一致的测试环境;
  2. 参数调优:压测前可先优化 MySQL 核心参数(如innodb_buffer_pool_sizemax_connectionsinnodb_flush_log_at_trx_commit);
  3. 逐步增加并发:从低并发(如 8、16)开始,逐步增加到 64、128,找到数据库的性能拐点;
  4. 监控配套:压测时用topiostatvmstat监控服务器 CPU、磁盘 IO、内存使用,定位性能瓶颈(如 IO 打满则需优化磁盘,CPU 打满则需优化 SQL 或数据库参数)。

总结

  1. sysbench 压测 MySQL 的核心流程是「准备数据 → 执行压测 → 清理数据」,核心参数需关注table-size(单表行数)、tables(表数量)、threads(并发数);
  2. 核心压测指标为 TPS(每秒事务数)、QPS(每秒查询数)、95% 响应时间,前两者越高、后者越低,数据库性能越好;
  3. 压测时需隔离环境、逐步增加并发,并结合服务器监控定位性能瓶颈,而非仅看数值。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/13 13:57:47

如何用PyWebView与React构建现代化桌面应用:5步终极指南

如何用PyWebView与React构建现代化桌面应用&#xff1a;5步终极指南 【免费下载链接】mdserver-web Simple Linux Panel 项目地址: https://gitcode.com/GitHub_Trending/md/mdserver-web 想要摆脱传统桌面应用开发的繁琐流程&#xff0c;同时享受现代前端技术带来的极致…

作者头像 李华
网站建设 2025/12/13 13:56:08

积木报表终极指南:零代码实现专业级数据可视化

积木报表终极指南&#xff1a;零代码实现专业级数据可视化 【免费下载链接】jimureport 「数据可视化工具&#xff1a;报表、大屏、仪表盘」积木报表是一款类Excel操作风格&#xff0c;在线拖拽设计的报表工具和和数据可视化产品。功能涵盖: 报表设计、大屏设计、打印设计、图形…

作者头像 李华
网站建设 2025/12/13 13:55:58

2025年木质台历供应商评测,云边包装专业靠谱

木质台历作为办公与家居装饰的重要元素&#xff0c;近年来受到越来越多消费者的青睐。随着个性化定制需求的增长&#xff0c;木质台历市场呈现出蓬勃发展的态势。本文将从产品质量、生产能力、客户服务和性价比四个维度&#xff0c;对2025年木质台历行业的主要供应商进行客观评…

作者头像 李华
网站建设 2025/12/19 9:13:26

AlphaFold蛋白质结构预测终极指南:CPU环境下的完整部署方案

AlphaFold蛋白质结构预测终极指南&#xff1a;CPU环境下的完整部署方案 【免费下载链接】alphafold 项目地址: https://gitcode.com/gh_mirrors/alp/alphafold 还在为昂贵的GPU计算资源发愁吗&#xff1f;AlphaFold作为蛋白质结构预测的突破性技术&#xff0c;现在可以…

作者头像 李华
网站建设 2025/12/13 13:54:32

Qwen2.5-VL如何实现三维空间智能感知革命?

Qwen2.5-VL如何实现三维空间智能感知革命&#xff1f; 【免费下载链接】Qwen2.5-VL Qwen2.5-VL is the multimodal large language model series developed by Qwen team, Alibaba Cloud. 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen2.5-VL 在人工智能飞速发…

作者头像 李华
网站建设 2025/12/19 4:41:21

DiffSynth-Studio 扩散模型视频生成完整安装配置指南

DiffSynth-Studio 扩散模型视频生成完整安装配置指南 【免费下载链接】DiffSynth-Studio DiffSynth Studio 是一个扩散引擎。我们重组了包括 Text Encoder、UNet、VAE 等在内的架构&#xff0c;保持了与开源社区模型的兼容性&#xff0c;同时提高了计算性能。我们提供了许多有趣…

作者头像 李华