MySQL基准测试工具Sysbench安装配置详解

安装:
- 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

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS