安装:
- RHEL/CentOS:
``` shell
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
yum -y install sysbench
测试的脚本目录 :
[test@node232 sysbench]# pwd
/usr/share/sysbench
[test@node232 sysbench]# ls
bulk_insert.lua oltp_insert.lua oltp_read_write.lua oltp_write_only.lua tests
oltp_common.lua oltp_point_select.lua oltp_update_index.lua select_random_points.lua
oltp_delete.lua oltp_read_only.lua oltp_update_non_index.lua select_random_ranges.lua
LUA脚本解析:
bulk_insert.lua 插入的lua脚本
oltp_delete.lua DELETE语句的lua脚本
oltp_insert.lua INSERT语句的Lua脚本
oltp_point_select.lua 点查语句的Lua脚本,主键查询SELECT c FROM sbtest? WHERE id = ?
oltp_read_only.lua 只读语句的Lua脚本
oltp_read_write.lua 读写的Lua脚本
oltp_update_index.lua 更新索引字段操作的Lua语句
oltp_update_non_index.lua 更新无索引字段操作语句
oltp_write_only.lua 纯写语句的Lua脚本
select_random_points.lua 随机点查脚本
select_random_ranges.lua 随机点查脚本
以下测试只有脚本的名称不同,其它的参数都一样
读写测试:
首先创建数据库sbtest
mysql>create database sbtest;
[test@node232 sysbench]#cd /usr/share/sysbench
#prepare 生成数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 prepare
#run 运行测试
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=500 --report-interval=1 --time=100 run
cleanup 清理数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 cleanup
只读测试:
#prepare 生成数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=127.0.0.1 --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 prepare
#run 运行测试
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=500 --report-interval=1 --time=100 run
cleanup 清理数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 cleanup
写入测试:
#prepare 生成数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_write_only.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=127.0.0.1 --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 prepare
#run 运行测试
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_write_only.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=500 --report-interval=1 --time=100 run
cleanup 清理数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_write_only.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 cleanup
基于索引更新测试:
#prepare 生成数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_update_index.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=127.0.0.1 --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 prepare
#run 运行测试
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_update_index.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=500 --report-interval=1 --time=100 run
cleanup 清理数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_update_index.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 cleanup
基于非索引更新测试:
#prepare 生成数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_update_non_index.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=127.0.0.1 --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 prepare
#run 运行测试
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_update_non_index.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=500 --report-interval=1 --time=100 run
cleanup 清理数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_update_non_index.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 cleanup
删除数据测试:
#prepare 生成数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_delete.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=127.0.0.1 --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 prepare
#run 运行测试
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_delete.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=500 --report-interval=1 --time=100 run
cleanup 清理数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/oltp_delete.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 cleanup
随机读测试:
#prepare 生成数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/select_random_points.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=127.0.0.1 --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 prepare
#run 运行测试
[test@node232 sysbench]# sysbench /usr/share/sysbench/select_random_points.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=500 --report-interval=1 --time=100 run
cleanup 清理数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/select_random_points.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 cleanup
随机范围读测试:
#prepare 生成数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/select_random_ranges.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=127.0.0.1 --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 prepare
#run 运行测试
[test@node232 sysbench]# sysbench /usr/share/sysbench/select_random_ranges.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=500 --report-interval=1 --time=100 run
cleanup 清理数据
[test@node232 sysbench]# sysbench /usr/share/sysbench/select_random_ranges.lua --mysql-db=sbtest --mysql-user=test --mysql-password=Hexin123.--mysql-host=localhost --mysql-port=3306 --table_size=2000 --tables=1 --threads=500 --events=5000 --report-interval=1 --time=100 cleanup
参数详解:
--mysql-host IP
--mysql-port 端口号
--mysql-db 希望链接的数据库
--mysql-user 用户名
--mysql-password 密码
--table_size 每张表初始化的数据数量
--tables 初始化表的数量
--threads 启动的线程
--time 运行时间,设为0表示不限制时间
--report-interval 运行期间日志输出频率,单位为秒
--events 最大请求数量,定义数量后可以不需要--time选项
mysql>show variables like 'max_connections';(查看当前的最大连接数)
mysql>set global max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功)
mysql>show variables like 'max_connections';(查看当前的最大连接数)
mysql>exit
输出参数详解:
Initializing worker threads...
Threads started!
####以下是每5秒返回一次的结果,统计的指标包括:
#### 线程数、tps(每秒事务数)、qps(每秒查询数)、
#### 每秒的读/写/其它次数、延迟、每秒错误数、每秒重连次数
[ 5s ] thds: 4 tps: 130.16 qps: 2606.30 (r/w/o: 1824.51/520.66/261.13) lat (ms,95%): 104.84 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 4 tps: 126.74 qps: 2539.17 (r/w/o: 1778.17/507.52/253.47) lat (ms,95%): 108.68 err/s: 0.00 reconn/s: 0.00
[ 15s ] thds: 4 tps: 136.54 qps: 2736.34 (r/w/o: 1915.25/548.01/273.07) lat (ms,95%): 102.97 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 107.44 qps: 2148.65 (r/w/o: 1505.60/428.17/214.89) lat (ms,95%): 132.49 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 35098 # 执行的读操作数量
write: 10028 # 执行的写操作数量
other: 5014 # 执行的其它操作数量
total: 50140
transactions: 2507 (124.29 per sec.) # 执行事务的平均速率
queries: 50140 (2485.82 per sec.) # 平均每秒能执行多少次查询
ignored errors: 0 (0.00 per sec.) #每秒的错误数
reconnects: 0 (0.00 per sec.) #每秒的重连数
General statistics:
total time: 20.1694s # 总消耗时间
total number of events: 2507 # 总请求数量(读、写、其它)
Latency (ms):
min: 2.32
avg: 32.13
max: 575.78
95th percentile: 118.92 # 采样计算的平均延迟
sum: 80554.96
Threads fairness:
events (avg/stddev): 626.7500/2.49
execution time (avg/stddev): 20.1387/0.04