压测数据全记录

MySQL5.5原生版本,sync_binlog 1000 innodb_flush_log_at_trx_commit 2

1. 死锁检测

压测场景:

一个事务里面先insert,再update,insert随意,update对同一条记录更新,并发128,循环10000次

压测结果:

关闭死锁检测tps:5705 打开死锁检测tps:1659,

结论:

在对tps要求比较高的场景中关闭死锁检测很有必要,但是前提是整个涉及的场景中没有死锁,否则的话,关闭死锁检测只会起到相反的作用

2. 备库延迟

压测场景:

尽量让主库的tps高,看主库的tps达到多少时备库开始延迟

压测结果:

主库的tps达到9k以上时,备库开始延迟,主库的tps在9k-1w时,备库的延迟时间在1s之内;主库的tps在1w~1.2w的时候,备库的延迟在100s以内;多实例下也是一样的

 3. innodb表,根据id更新和根据uk更新性能上差异多大

压测背景:

id是主键,uk (iid,sid)

压测结果:

语句:

update a set q=q-0, v=v+1, gmt_modified=now(), rq = CASE WHEN ((rq + 2 ) >= 0 ) then rq + 2 
ELSE 0 END where id=200060000007408609 and iid=9749545200 and sid = 0 and (q - rq - 2) >= 0 and q-0>=0;

结果:

Summary: SQL01 exec=537849, rows=537849=100/e, avg=140840 us
Summary: exec=896/s, qtps=896/s

语句:

update a set q=q-0, v=v+1, gmt_modified=now(), rq = CASE WHEN ((rq + 2 ) >= 0 ) then rq + 2 

ELSE 0 END where iid=9749545200 and sid = 0 and (q - rq - 2) >= 0 and q-0>=0;
结果:
Summary: SQL01 exec=633689, rows=633689=100/e, avg=147471 us
Summary: exec=768/s, qtps=768/s

结论:

如果可以尽量使用id更新吧

4. 两套同样的写语句放到事务里和不放到事务里性能相差多大?

事务版本

1024个并发

insert a exec=23592, rows=23592=100/e, avg=420 us
update b exec=25600, rows=25600=100/e, avg=91622 us
Summary: exec=2599/s, qtps=5182/s

伪事务版本

insert a exec=23556, rows=23556=100/e, avg=652 us

update b exec=25600, rows=25600=100/e, avg=37346 us

Summary: exec=6624/s, qtps=12867/s

事务版本是伪事务版本的一半性能

低压力下出高性能

128个并发

事务版本

insert a exec=11745, rows=11745=100/e, avg=366 us
update b exec=12800, rows=12800=100/e, avg=41315 us--锁时间
Summary: exec=2968/s, qtps=5761/s

伪事务版本

insert a exec=11756, rows=11756=100/e, avg=518 us
update b exec=12800, rows=12800=100/e, avg=14483 us--update锁时间
Summary: exec=8488/s, qtps=16343/s

 

转载于:https://www.cnblogs.com/sunss/p/3163019.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter是一款非常强大的压力测试工具,可以用于对Web应用程序、Web服务、数据库等进行性能测试。在进行实际的压测过程中,文档记录是非常重要的,可以帮助团队成员了解测试的目的、过程和结果。以下是一些常见的JMeter压测文档记录内容: 1. 测试目标和范围:明确测试的目标和范围,例如测试的是哪个应用程序、测试的功能点、预期的用户并发量等。 2. 测试计划:记录测试计划的详细信息,包括测试场景、测试数据、测试脚本等。可以包括脚本编写过程中的思路和方案。 3. 测试环境配置:记录测试环境的配置信息,包括服务器硬件配置、操作系统版本、JDK版本等。这些信息可以帮助其他人在复现测试结果时保持一致的环境。 4. 测试步骤:记录进行压测的具体步骤,包括启动JMeter、导入测试计划、配置线程组、设置断言等。步骤应该尽量详细,以便他人能够按照文档进行操作。 5. 测试结果分析:记录测试运行结束后的结果分析,包括响应时间、吞吐量、错误率等指标。可以使用图表或表格的形式展示结果,方便其他人快速了解测试结果。 6. 总结和建议:对测试过程进行总结,并提出改进的建议。可以记录测试过程中遇到的问题、解决方案和经验教训,为以后的压测提供参考。 需要注意的是,文档记录应该尽量清晰、简洁,使用易于阅读和理解的语言。同时,及时更新文档以反映实际情况的变化。这样可以帮助团队成员更好地理解和利用文档中的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值