sysbench压测mysql性能测试命令和报告
- 一、安装sysbench工具
- 二、创建测试数据库
- 三、基于sysbench构造测试表和测试数据
- 四、数据库性能测试
- 1、数据库读写性能测试
- 2、数据库读性能测试
- 3、数据库删除性能测试
- 4、数据库更新索引字段性能测
- 5、数据库更新非索引字段性能测试
- 6、数据库插入数据性能测试
- 7、数据库写性能测试
- 8、执行完成压测之后可以将run改成cleanup,清除数据
一、安装sysbench工具
- 下载sysbench工具
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
- 安装sysbench工具
sudo yum -y install sysbench
- 查看安装后的版本号
sysbench --version
二、创建测试数据库
登到mysql后台,创建sysbench数据库
create database tssysbench;
注意:如果没tssysbench数据库,执行后续sysbench命令时会报下面的错误。
三、基于sysbench构造测试表和测试数据
sysbench /usr/share/sysbench/oltp_read_write.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=10 \
--threads=128 --time=300 \
prepare
命令行中的参数说明:
--db-driver=mysql:代表数据库驱动
--time=300:这个就是说连续访问300秒
--threads=128:这个就是说用128个线程模拟并发访问
--report-interval=10:这个就是说每隔10秒输出一下压测情况
--mysql-host=172.16.111.109 --mysql-port=13306 --mysql-user=root --mysql-password=123456:数据库的用户和密码等信息
--mysql-db=tssysbench --tables=20 --table_size=1000000:这一串的意思,就是说在tssysbench这个库里,构造20个测试表,每个测试表里构造100万条测试数据,测试表的名字会是类似于sbtest1,sbtest2这个样子的
/usr/share/sysbench/oltp_read_write:这个就是说,执行oltp数据库的读写测试
最后有一个prepare,意思是参照这个命令的设置去构造出来我们需要的数据库里的数据,他会自动创建20个测试表,每个表里创建100万条测试数据,所以这个工具是非常的方便的。
下面是执行过程中的输出信息:
查询表中的数据,发现表里面有100w条数据:
四、数据库性能测试
1、数据库读写性能测试
数据库读写性能测试,将执行指令最后的prepare修改成run:
sysbench /usr/share/sysbench/oltp_read_write.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=10 \
--threads=64 --time=30 \
run
下面是截取的执行10秒,20秒,30秒的数据。
[ 10s ] thds: 64 tps: 1184.53 qps: 23779.02 (r/w/o: 16660.13/4743.43/2375.46) lat (ms,95%): 97.55 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 64 tps: 860.68 qps: 17213.78 (r/w/o: 12045.88/3446.54/1721.37) lat (ms,95%): 161.51 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 64 tps: 692.06 qps: 13844.57 (r/w/o: 9691.79/2768.65/1384.13) lat (ms,95%): 267.41 err/s: 0.00 reconn/s: 0.00
对表中的数据进行说明,以第一条数据做解释描述:
thds: 64,这个意思就是有10个线程在压测
tps: 1184.53,这个意思就是每秒执行了1184.53个事务
qps: 23779.02,这个意思就是每秒可以执行23779.02个请求(r/w/o: 16660.13/4743.43/2375.46),这个意思就是说,在每秒23779.02个请求中,有16660.13个请求是读请求,4743.43个请求是写请求,2375.46个请求是其他的请求,就是对QPS进行了拆解
lat (ms, 95%): 97.55,这个意思就是说,95%的请求的延迟都在 97.55毫秒以下
err/s: 0.00 reconn/s: 0.00,这两个的意思就是说,每秒有0个请求是失败的,发生了0次网络重连
下面是执行完成后控制台输出的数据:
2、数据库读性能测试
sysbench /usr/share/sysbench/oltp_read_only.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
3、数据库删除性能测试
sysbench /usr/share/sysbench/oltp_delete.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
4、数据库更新索引字段性能测
sysbench /usr/share/sysbench/oltp_update_index.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
5、数据库更新非索引字段性能测试
sysbench /usr/share/sysbench/oltp_update_non_index.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
6、数据库插入数据性能测试
sysbench /usr/share/sysbench/oltp_insert.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
7、数据库写性能测试
sysbench /usr/share/sysbench/oltp_write_only.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
8、执行完成压测之后可以将run改成cleanup,清除数据
sysbench /usr/share/sysbench/oltp_read_write.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
cleanup