讲师中心 微信公众号
AI工具推荐 视频效率加速

mysql如何进行数据库压力测试分析_定位环境性能瓶颈

夜磊吖_2351

夜磊吖_2351

发布时间:2026-03-25 09:11:42

|

835人浏览过

|

来源于php中文网

原创

QPS上不去的主因是MySQL配置与硬件协同失衡。具体包括:InnoDB日志文件过小引发频繁checkpoint、max_connections与超时参数不匹配导致连接堆积、innodb_flush_log_at_trx_commit=1加剧I/O瓶颈、table_open_cache不足触发高频文件操作、缺失索引使全表扫描逃逸慢日志,以及pt-query-digest未聚类预编译语句致分析失真。

mysql如何进行数据库压力测试分析_定位环境性能瓶颈

用 sysbench 做基础压测时,为什么 QPS 上不去?

不是并发数设高就一定压得起来,sysbench 默认的 --threads=16 在多数测试机上反而会因锁争用拖慢整体吞吐。真实瓶颈常藏在 MySQL 的连接池、日志刷盘和临时表配置里。

  • innodb_log_file_size 太小(如默认 48MB)会导致频繁 checkpoint,压测中 Innodb_log_waits 明显上升,QPS 波动剧烈
  • max_connections 不够时,sysbench 报错 Too many connections,但实际连接数可能远低于该值——因为 wait_timeout 和连接复用策略影响了连接回收速度
  • 没关 innodb_flush_log_at_trx_commit=2 就跑写密集型压测,磁盘 I/O 成死结,iostat -x 1 里 %util 长期 100%,await 拉到 20ms+ 是典型信号

查 SHOW PROCESSLIST 看到大量 Sleep 状态,是应用层问题还是 MySQL 配置问题?

不能直接归咎于应用。MySQL 中 Sleep 状态本质是连接空闲,但持续堆积说明连接没被及时释放或复用策略失当。重点盯三个地方:

  • wait_timeout 和 interactive_timeout 设太高(比如 28800 秒),导致连接长期挂起却不释放,Threads_connected 慢慢涨满 max_connections
  • 应用用了长连接但没做连接健康检查,中间网络抖动后连接卡在 Sleep,后续请求全排队等待
  • performance_schema 开着但没开相关消费者(如 events_statements_history_long),根本看不到这些 Sleep 连接上一次执行了什么语句,无法判断是否被慢查询拖住

slow_query_log 开了却没记录明显慢 SQL,瓶颈可能在哪?

慢日志只捕获单条语句执行时间超阈值的 SQL,但压测中的性能坍塌往往来自组合效应:锁等待、缓冲区不足、解析开销。这时候要切到更底层指标。

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • long_query_time 设成 2 秒,但大量 800ms 的语句反复抢同一行锁,Innodb_row_lock_time_avg 却飙到 150ms——这比单条慢 SQL 更伤吞吐
  • table_open_cache 不足时,每秒 Opened_tables 持续上涨,说明 MySQL 在反复打开/关闭 .frm 文件,CPU 花在文件系统路径解析而非执行 SQL
  • 没开 log_queries_not_using_indexes,而压测表又缺关键索引,结果全是全表扫描,但每条都不到 long_query_time 阈值,慢日志一片空白

用 pt-query-digest 分析慢日志,为什么 top 语句和监控看到的热点不一致?

pt-query-digest 默认按响应时间排序,但压测中真正卡住系统的,往往是高频率低耗时语句引发的锁竞争或 CPU 解析压力。它不会自动合并带不同参数的预编译语句,容易把同一类查询拆成几十条“不同”SQL。

  • 加 --filter '$event->{fingerprint} =~ m/^SELECT.*FROM orders/i' 手动聚类业务主表访问,比默认输出更有指向性
  • 别只看 Count 或 Query_time,重点关注 Lock_time 和 Rows_examined 的比值——若 Rows_examined 是 Rows_sent 的百倍,说明索引失效或条件没走对
  • pt-query-digest --report-format json 输出后,用 jq 提取 .items[0].Query_time.avg 和 .items[0].Lock_time.avg 对比,差值大意味着锁是主要延迟源,不是 SQL 本身慢

压测不是比谁跑出更高 QPS,而是让每个数字背后都有可解释的链路。最常漏掉的是硬件层反馈——比如 vmstat 1 里 si/so 非零说明内存交换已启动,这时再调 MySQL 参数都是隔靴搔痒。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
大数据分析工具有哪四个
大数据分析工具有哪四个

大数据分析的四个工具分别是rapidminer、Hpcc、Hadoop和Pentaho bi。大数据分析用于从各种来源生成的原始数据中提取有价值的数据。这些数据帮助我们获得有意义的见解、隐藏的模式、未知的相关性、市场趋势等等,具体取决于行业。大数据分析的主要动机是提供有价值的见解,以便为未来做出更好的决策。php中文网为大家带来了大数据分析的相关教程、以及相关文章等内容,供大家免费下载使用。

5016

2023.06.21

Java 大数据处理基础(Hadoop 方向)
Java 大数据处理基础(Hadoop 方向)

本专题聚焦 Java 在大数据离线处理场景中的核心应用,系统讲解 Hadoop 生态的基本原理、HDFS 文件系统操作、MapReduce 编程模型、作业优化策略以及常见数据处理流程。通过实际示例(如日志分析、批处理任务),帮助学习者掌握使用 Java 构建高效大数据处理程序的完整方法。

1249

2025.12.08

大数据专业学习教程
大数据专业学习教程

本专题整合了大数据专业学习相关教程,阅读专题下面的文章了解更多详细内容。

243

2026.01.05

python处理大数据合集
python处理大数据合集

本专题整合了python处理大数据相关教程,阅读专题下面的文章了解更多详细内容。

466

2026.01.05

mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2213

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1359

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

795

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3032

2023.07.19

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 187人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn