sysbench mysql oltp_sysbench OLTP基准测试

1、sysbench参数

# 通过参数

--num-threads=N           创建测试线程的数目。默认为1.

--max-requests=N          请求的最大数目。默认为10000,0代表不限制。

--max-time=N              最大执行时间,单位是s。默认是0,不限制。

--forced-shutdown=STRING  超过max-time强制中断。默认是off。]

--thread-stack-size=SIZE  每个线程的堆栈大小。默认是32K。

--init-rng=[on|off]       在测试开始时是否初始化随机数发生器。默认是off。

--test=STRING             指定测试项目名称。

--debug=[on|off]          是否显示更多的调试信息。默认是off。

--validate=[on|off]       在可能情况下执行验证检查。默认是off。

--num-threads=8 表示发起 8个并发连接

--oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试

--report-interval=10 表示每10秒输出一次测试进度报告

--rand-type=uniform 表示随机类型为固定模式,其他几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)

--max-time=120 表示最大执行时长为 120秒

--max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长

--percentile=99 表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值

2、OLTP压测

1、创建数据表

#创建数据库

mysqladmin create sbtest

sysbench --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --mysql-password=123456  --mysql-table-engine=innodb --oltp-table-size=10000000 prepare

#5.0版本开始使用   --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua

#如果在本机,也可以使用 –mysql-socket 指定 socket 文件来连接。加载测试数据时长视数据量而定,若过程比较久需要#稍加耐心等待。

#真实测试场景中,数据表建议不低于10个,单表数据量不低于500万行,当然了,要视服务器硬件配置而定。如果是配备了SSD或者PCIE SSD这种高IOPS设备的话,则建议单表数据量最少不低于1亿行。

2、压测

sysbench  --mysql-db=sbtest --max-requests=0 --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --mysql-engine-trx=yes --mysql-table-engine=innodb --oltp-table-size=10000000 --db-ps-mode=disable  --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock  --mysql-password=123456 --num-threads=16 --max-time=600 run

#压测1个小时读写,16线程

#使用16个线程开始测试,只读模式。

#sysbench  --mysql-db=sbtest --max-requests=0 --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --mysql-engine-trx=yes --mysql-table-engine=innodb --oltp-table-size=10000000 --db-ps-mode=disable  --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock  --oltp-read-only --mysql-password=123456 --num-threads=16 --max-time=60 run

即:模拟 对10个表并发OLTP测试,每个表1000万行记录,持续压测时间为 1小时。

真实测试场景中,建议持续压测时长不小于30分钟,否则测试数据可能不具参考意义。

3、压测结果

OLTP test statistics:

queries performed:

read:                            170996  -- 读总数

write:                           48856   -- 写总数

other:                           24428   -- 其他操作总数(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等)

total:                           244280

transactions:                        12214  (203.47 per sec.) 总事务数(每秒事务数)

read/write requests:                 219852 (3662.51 per sec.) 读写总数(每秒读写次数)

other operations:                    24428  (406.95 per sec.)  其他操作总数(每秒其他操作次数)

ignored errors:                      0      (0.00 per sec.)

reconnects:                          0      (0.00 per sec.)

General statistics:

total time:                          60.0276s

total number of events:              12214  - 共发生多少事务数

total time taken by event execution: 959.8838s  所有事务耗时相加(不考虑并行因素)

response time:

min:                                  8.07ms     -- 最小耗时

avg:                                 78.59ms     -- 平均耗时

max:                                750.64ms     -- 最长耗时

approx.  95 percentile:             141.56ms     -- 超过99%平均耗时

Threads fairness:

events (avg/stddev):           763.3750/7.61

execution time (avg/stddev):   59.9927/0.02

4、清理数据

#清理测试的残留信息

sysbench  --mysql-db=sbtest  --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --oltp-table-size=1000000  --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock  --mysql-password=123456 cleanup

5、参考文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值