初识MYSQL压力测试

文档参考来源:

  1. https://www.cnblogs.com/wxzhe/p/10026569.html
  2. 慕课网的mysql教程

主机配置

是以本人的mac机器上做的测试,配置如下:
CPU: i7,4核心
内存:16GB
硬盘:SSD 256G
在这里插入图片描述

先学习几个概念

在这里插入图片描述

QPS

每秒钟处理完请求的次数

TPS

每秒处理完的事务次数

响应时间

一次请求所需要的平均处理时间

并发量

系统同时处理的总的请求数,包含处理完的请求

Mysql压力测试工具sysbench

我们需要知道的是sysbench并不是一个压力测试工具,是一个基准测试工具。linux自带的版本比较低,我们需要自己安装sysbench。
在这里插入图片描述

mac上安装

brew install sysbench

linux上安装

安装sysbench,sysbench的源码托管在GitHub上,下载源

#解压源码包
unzip sysbench-master.zip

#安装依赖包
yum -y install make automake libtool pkgconfig libaio-devel

#编译
cd sysbench-master
sh autogen.sh

#根据安装的MySQL的位置,设置目录位置
./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib
make && make install

#这样安装之后使用sysbench命令时会报错。
sysbench --version
"sysbench: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory"

#解决办法:在/etc/profile文件中加入一行:
export LD_LIBRARY_PATH=/usr/local/mysql/lib
source /etc/profile

#命令可以正常使用
sysbench --version

sysbench的参数说明

测试数据库名是定死的,不能随意修改,就叫sbtest
在这里插入图片描述

oltp-test-mode:
simple 表示只做查询,不做修改/插入/删除
nontrx 表示无事务的,像myisam引擎
complex 表示有事务的,像innodb引擎
在这里插入图片描述
prepare是sysbench自动生成的数据
在这里插入图片描述

执行测试

  • linu下的测试示例图
    在这里插入图片描述
  • mac下的测试说明

如果是brew方式安装,那么准备数据的脚本路径就是
/usr/local/opt/sysbench/share/sysbench/tests/include/oltp_legacy/oltp.lua

  • mac本地的测试
    创建数据库,库名定死的,不能变,就叫sbtest
create database sbtest
  • 生成测试数据
    sysbench /usr/local/opt/sysbench/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-tables-count=10 --oltp-table-size=100000 prepare

  • 执行测试
    在这里插入图片描述

压测本机mysql数据库
sysbench /usr/local/opt/sysbench/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --threads=10 --time=600 --report-interval=10 run >> /Users/allen.huang/sysbench-report.log

测试报告的指标说明

这是经过10分钟的压力测试的报告结果

SQL statistics:
    queries performed:
        read:                            8751218  #总的读操作 
        write:                           2491908  #总的写操作
        other:                           1257891  #其他的操作
        total:                           12501017 #总的操作数量
    transactions:                        624883 (1041.35 per sec.) #总事务(平均每秒钟处理的事务数量)
    queries:                             12501017 (20832.65 per sec.) #总查询(平均每秒处理的查询数量)
    ignored errors:                      204    (0.34 per sec.) #总错误(每秒产生的错误,一般是在做压测的同时,还有其他连接请求进来)
    reconnects:                          0      (0.00 per sec.) #重连次数(每秒的重连次数)

General statistics:
    total time:                          600.0668s
    total number of events:              624883

Latency (ms):
         min:                                    5.00  #最小响应时间
         avg:                                    9.60  #平均响应时间
         max:                                  690.63  #最大响应时间
         95th percentile:                       14.73  #95%的响应时间
         sum:                              5998674.20  #总的时间

Threads fairness:
    events (avg/stddev):           62488.3000/80.94
    execution time (avg/stddev):   599.8674/0.03

结语

这是对mysql压力测试基础学习,后面有新的知识点再补充,欢迎小伙伴们指导批评。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值