今天介绍1个数据库性能压测的工具:sysbench
参考文章:
https://github.com/akopytov/sysbench
https://www.cnblogs.com/f-ck-need-u/p/9279703.html
https://www.cnblogs.com/sxdear/p/16540266.html
1、主要是压测数据库性能的,实际中一定要注意,如果是线上或测试服正在使用的数据库做压测的时候一定要谨慎!压测的太狠会增加数据库负载、提升CPU使用率,会影响业务!
2、最好是用一个没有业务使用的数据库,比如线上新申请的数据库还没有跑业务,或者干脆临时用一个测试库,性能比实际使用的少几倍,压测完测试的库以后也能预估实际使用的数据库的性能。
3、mac安装:❗️默认版本只支持MySQL,想要支持pgSQL的话加上相关参数即可
brew install sysbench
4、安装完以后先不要着急找命令,配套了很多lua脚本,可以看看里面的脚本:
(1)
which sysbench (/usr/local/bin/) 找到sysbench的命令安装的地方
cd /usr/local/bin/ 有下面的软连接对应的地址:
sysbench -> ../Cellar/sysbench/1.0.20_2/bin/sysbench
然后:cd ../Cellar/sysbench/1.0.20_2 这里是sysbench安装的地址
然后在安装位置:cd share/sysbench
里面有很多lua脚本!❗️还有tests目录下的一个测试脚本~
❗️主要是:oltp_common.lua,很多脚本都是用的里面的方法!
(2)要查看oltp_common.lua的用法,可以:
sysbench /usr/local/Cellar/sysbench/1.0.20_2/share/sysbench/oltp_common.lua help
5、帮助命令:
sysbench --help
(1) 线程数设置为运行机器CPU核数的2倍即可~
6、
(1) 创建测试数据库:create database sbtest;
(2) 准备测试的表:
sysbench --mysql-host=127.0.0.1 \
--mysql-port=3307 \
--mysql-user=root \
--mysql-password=123 \
/usr/local/Cellar/sysbench/1.0.20_2/share/sysbench/oltp_common.lua \
--tables=2 \
--table_size=10000 \
prepare
然后在数据库sbtest中生成2张表:sbtest1与sbtest2,里面分别有10000条数据~
desc sbtest1;
select count(1) from sbtest1;
select * from sbtest1 limit 3;
(3) 如果想要清除这10个表,可使用cleanup命令。
sysbench --mysql-host=127.0.0.1 \
--mysql-port=3307 \
--mysql-user=root \
--mysql-password=123 \
/usr/local/Cellar/sysbench/1.0.20_2/share/sysbench/oltp_common.lua \
--tables=2 \
cleanup
(4-1) 稍微修改下之前准备数据的语句,就可以拿来测试了。
需要注意的是,之前使用的lua脚本为oltp_common.lua,它是一个通用脚本,是被其它lua脚本调用的,它不能直接拿来测试。
所以,我这里用oltp_read_write.lua脚本来做读、写测试。还有很多其它类型的测试,比如只读测试、只写测试、删除测试、大批量插入测试等等。可找到对应的lua脚本进行调用即可。
sysbench --threads=8 \
--time=10 \
--report-interval=5 \
--mysql-host=127.0.0.1 \
--mysql-port=3307 \
--mysql-user=root \
--mysql-password=123 \
/usr/local/Cellar/sysbench/1.0.20_2/share/sysbench/oltp_read_write.lua \
--tables=2 \
--table_size=10000 \
run
(4-2)结果:
参考:https://www.cnblogs.com/f-ck-need-u/p/9279703.html
(5)其他性能指标参考网上的说明即可