文档参考来源:
- https://www.cnblogs.com/wxzhe/p/10026569.html
- 慕课网的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压力测试基础学习,后面有新的知识点再补充,欢迎小伙伴们指导批评。