使用sysbench进行oltp测试之前,需要核对一下sysbench的版本,因为不同版本在使用的参数时,会有一定的差异。
mysql dba这本书中的sysbench使用的是0.5的版本,ubuntu中默认apt-get安装的是0.4.12版本,在执行数据准备时,参数不同,会报错->不知道的选项,不知道的参数,文件路径找不到
所以,建议在测试之前,确认一下版本的一致性,或者使用提供的help命令,确认提供的参数。
此次测试环境以及工具版本为:
-
CentOS Linux release 7.3.1611 (Core) sysbench 0.5 mysql Ver 14.14 Distrib 5.6.37, for Linux (x86_64) using EditLine wrapper
在oltp测试中,基本分为三个阶段:
1、初始化数据
需要在数据库中提前创建好sbtest数据库,若不创建,也可使用参数指定对应的数据库,进行数据插入准备
根据自己电脑的实际情况拼写参数,如,mysql-user和mysql-password分别对应的是数据库的登录名和密码,mysql-socket需要指定mysql.sock文件的位置【查看my.cnf配置文件】
sysbench --test=oltp.lua --mysql-table-engine=innodb --oltp-tables-count=3 --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock prepare
参数:
--mysql-db=test //测试数据库 --mysql-user=root //用户名 --myssql-password=123456 //密码 --oltp-tables-count=8 //表的数量 --oltp-table-size=100000 //每张表记录为10万 --mysql-sock=/var/lib/mysql/mysql.sock //mysql.sock路径,本地连接时可指定host ip连接,也可直接使用Mysql.sock连接
执行完建表语句后,生成一下数据
执行结果:在使用root账户登录数据库,在sbtest数据库中插入三张表,每张表1000000条数据
![](https://images2017.cnblogs.com/blog/688065/201709/688065-20170905110707835-262504558.png)
2、执行测试
sysbench --test=oltp.lua --mysql-table-engine=innodb --oltp-tables-count=3 --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock --max-time=60 --max-requests=0 --num-threads=8 --report-interval=10 run
新增的几个参数选项:
--num-threads=8 //线程数为8 --max-time=60 //测试时间为60s --report-interval=10 //报告打印周期为10s,每10s打印一次 --oltp-read-only=off //非只读操作测试
最重要的参数指标:
总的事务数,每秒事务数,时间统计信息(最大、最小、平均、95%以上语句响应时间)
3、清理数据
sysbench --test=oltp.lua --mysql-table-engine=innodb --oltp-tables-count=3 --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock cleanup
![](https://images2017.cnblogs.com/blog/688065/201709/688065-20170905110708147-1987564512.png)
测试过程中的问题:
1、oltp的位置指定,报错找不到对应的oltp.lua文件
注:此处需要指定oltp.lua脚本位置,sysbench5默认已经指定,如果按照网上或者树上的语句,提示如下报错,找不到对应的文件,发现自己写的路径前又追加了sysbench自带的路径,直接指定到了sysbench子文件夹。
![](https://images2017.cnblogs.com/blog/688065/201709/688065-20170905110708585-1542503857.png)
需要改变路径,直接指定oltp.lua即可
sysbench --test=oltp.lua --mysql-table-engine=innodb --oltp-tables-count=3 --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock prepare