sysbench 0.5相比0.4版本的主要变化是,oltp测试结合了lua脚本,不需要修改源码,通过自定义lua脚本就可以实现不同业务类型的测试。同时0.5相比0.4需要消耗更多的cpu资源。
1、查看帮助
sysbench --help
sysbench --test=fileio help
可以查看fileio、cpu、memory、threads、mutex的详细参数,0.4版本还可以查看oltp的参数
2、初始化测试表
创建单表,c和pad包含随机字符,k列是1到oltp-table-size的随机整数:
sysbench --test=/local/sysbenchtest/sysbench-0.5/sysbench/tests/db/oltp.lua --oltp-table-
size=1000000 --mysql-table-engine=innodb --mysql-user=root --mysql-port=3306 --mysql-
host=localhost --mysql-db=test prepare
参数说明:
--oltp-table-size:指定表的大小,即表的行数
--mysql-table-engine:指定存储引擎,如myisam,innodb,heap,ndbcluster,bdb,maria,falcon,pbxt
--mysql-db:指定在哪个数据库创建测试表,默认为sbtest库,需要提前创建好
--test:指定Lua脚本,参数选项大部分同老版本的--test=oltp help
--db-driver:指定驱动,默认为Mysql
--myisam-max-rows:指定Myisam表的MAX_ROWS选项
--oltp-secondary:测试表将使用二级索引KEY xid (ID) 替代 PRIMARY KEY (ID),innodb引擎内部为每个表创建唯一6字节的主键索引
--oltp-auto-inc:设置id列为auto-incremental,值为on或off,默认为on
创建多个表,使用--oltp-tables-count指定,默认为1:
./sysbench --test=tests/db/oltp.lua --oltp-tables-count=25 prepare
使用多线程创建多表,节省准备时间:
./sysbench --test=tests/db/parallel_prepare.lua --oltp-tables-count=64 --num-threads=8 run
--oltp-tables-count的数量应该是--num-threads的倍数。
3、进行oltp测试
单表:
sysbench --test=/local/sysbenchtest/sysbench-0.5/sysbench/tests/db/oltp.lua --oltp-table-size=1000000 --mysql-table-engine=innodb --mysql-user=root --mysql-port=3306 --mysql-host=localhost --mysql-db=test --max-requests=0 --max-time=600 --num-threads=512 --report-interval=10 run
如果使用--max-time(这里设置600s),需要设置--max-request为0,默认是10000(总请求数)
--num-threads:指定并发线程数,每个线程将选择一个随机的表
--oltp-dist-type:指定随机取样类型,默认为special,允许的值:uniform、gauss、special
--oltp-dist-pct:记录读取百分比
--oltp-dist-res:分配的概率
--oltp-read-only:执行仅仅SELECT测试,默认off
多表:
./sysbench --test=tests/db/oltp.lua --oltp-tables-count=25 --num-threads=5 run
创建表从sbtest1到sbtest25。
SELECT测试:
./sysbench --test=tests/db/select.lua --oltp-table-size=1000000 --mysql-table-engine=innodb --mysql-user=sysbench --mysql-password=sysbench --mysql-port=3306 --mysql-host=10.0.37.123 --mysql-db=test --max-requests=0 --max-time=600 --oltp-tables-count=20 --report-interval=10 run
另外有两个独立脚本可以进行Point select查询和Range查询的脚本:select_random_points.lua、select_random_ranges.lua
可选参数:
--oltp-point-selects:在一个事务里面Point select的数量,默认为10
--oltp-range-size:range查询的范围大小,默认100,应该小于oltp-table-size
--oltp-simple-ranges:在一个事务里面简单range查询的数量,默认1
--oltp-sum-ranges:在一个事务里面SUM range查询的数量,默认1
--oltp-order-ranges:在一个事务里面ORDER range查询的数量,默认1
--oltp-distinct-ranges:在一个事务里面DISTINCT range查询的数量,默认1
UPDATE测试:
同时有两个独立脚本可以进行update测试:update_index.lua、update_non_index.lua
./sysbench --test=tests/db/update_index.lua --oltp-table-size=1000000 --mysql-table-engine=innodb --mysql-user=sysbench --mysql-password=sysbench --mysql-port=3306 --mysql-host=10.0.37.123 --mysql-db=test --max-requests=0 --max-time=600 --oltp-tables-count=20 --report-interval=10 --num_threads=512 run
可选参数:
--oltp-index-updates:在单个事务中index update的数量,默认1;
--oltp-non-index-updates:在单个事务中non-index update的数量,默认1;
4、清除表
./sysbench --test=tests/db/oltp.lua --oltp-tables-count=25 --num-threads=5 cleanup
5、oltp测试结果
sysbench 0.5: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 512 #测试线程数量,当前为512
Report intermediate results every 10 second(s) #每10秒打印下信息
Random number generator seed is 0 and will be ignored
Threads started!
[ 10s] threads: 512, tps: 2169.58, reads/s: 30860.50, writes/s: 8706.12, response time: 456.99ms (95%)
[ 20s] threads: 512, tps: 2233.20, reads/s: 31197.05, writes/s: 8929.02, response time: 469.47ms (95%)
[ 30s] threads: 512, tps: 2249.30, reads/s: 31496.60, writes/s: 8995.40, response time: 445.78ms (95%)
[ 40s] threads: 512, tps: 2202.50, reads/s: 30844.00, writes/s: 8807.40, response time: 481.42ms (95%)
[ 50s] threads: 512, tps: 2263.60, reads/s: 31680.90, writes/s: 9052.30, response time: 441.13ms (95%)
[ 60s] threads: 512, tps: 2259.20, reads/s: 31616.80, writes/s: 9042.50, response time: 441.92ms (95%)
[ 70s] threads: 512, tps: 2276.20, reads/s: 31923.20, writes/s: 9115.90, response time: 444.04ms (95%)
[ 80s] threads: 512, tps: 2276.30, reads/s: 31850.90, writes/s: 9100.90, response time: 443.78ms (95%) #tps表示10s内的平均事务数,reads/s表示select语句在10s内平均的执行数量,writes/s表示update、insert、delete语句在10s内平均的执行数量,response time表示95%语句的平均响应时间
...
OLTP test statistics:
queries performed:
read: 19057346 #总select语句数量
write: 5444956 #总update、insert、delete语句数量
other: 2722478#为commit、unlock tables以及其他mutex的数量
total: 27224780
transactions: 1361239 (2268.17 per sec.) #通常需要关注的数字(TPS)
deadlocks: 0 (0.00 per sec.) #整个测试过程中发生死锁次数
read/write requests: 24502302 (40827.01 per sec.)
other operations: 2722478 (4536.33 per sec.)
General statistics:
total time: 600.1494s #总执行时间,如果使用了max-request参数,可以关注下这个结果
total number of events: 1361239
total time taken by event execution: 307190.3628s
response time:
min: 7.13ms
avg: 225.67ms
max: 1471.84ms #最大响应时间
approx. 95 percentile: 440.34ms #95%的语句的平均响应时间
Threads fairness:
events (avg/stddev): 2658.6699/50.08
execution time (avg/stddev): 599.9812/0.29
在源码文件db_driver.c和sb_fileio.c中有对各参数值进行定义。
同时测试时使用orzdba工具统计的数据部分如下:
-------- -------------------------io-usage----------------------- -QPS- -TPS-
time | r/s w/s rkB/s wkB/s queue await svctm %util| ins upd del sel iud|
20:04:29| 0.0 2475.2 0.0 16002.0 0.1 0.1 0.0 8.7| 2166 4330 2165 30326 8661|
20:04:39| 0.0 2670.6 0.0 16738.0 0.1 0.1 0.0 9.1| 2156 4313 2156 30187 8626|
20:04:49| 0.0 2356.0 0.0 14956.9 0.1 0.1 0.0 9.2| 2172 4344 2171 30423 8688|
20:04:59| 0.0 2725.8 0.0 15563.3 0.1 0.1 0.0 9.4| 2168 4336 2169 30356 8675|
20:05:09| 0.0 2569.7 0.0 15425.1 0.1 0.1 0.0 8.7| 2165 4333 2165 30327 8663|
20:05:19| 0.0 2640.6 0.0 15377.1 0.2 0.1 0.0 9.7| 2170 4338 2170 30401 8679|
20:05:30| 0.0 2376.1 0.0 14424.9 0.1 0.1 0.0 8.2| 2180 4357 2179 30495 8717|
20:05:40| 0.0 2553.4 0.0 15090.8 0.1 0.1 0.0 8.8| 2164 4333 2166 30297 8664|
20:05:50| 0.0 2416.2 0.0 15587.6 0.1 0.1 0.0 8.5| 2174 4345 2173 30447 8693|
20:06:00| 0.0 2422.9 0.0 15534.9 0.1 0.1 0.0 8.0| 2172 4344 2172 30404 8690|
20:06:10| 0.1 2499.2 0.4 15285.3 0.1 0.1 0.0 9.1| 2167 4337 2167 30360 8672|
20:06:20| 0.0 2364.3 0.0 14850.4 0.2 0.1 0.0 9.4| 2167 4333 2168 30354 8669|
20:06:30| 0.0 2645.1 0.0 15898.7 0.1 0.1 0.0 9.1| 2166 4334 2167 30330 8668|
20:06:40| 0.0 2276.3 0.0 15125.8 0.1 0.1 0.0 7.9| 2168 4333 2167 30323 8669|
20:06:50| 0.0 2482.1 0.0 16110.2 0.1 0.1 0.0 9.5| 2167 4336 2167 30346 8671|
可以对比出sysbench的输出值含义。
参考:
- sysbench 0.5使用手册
注意:本文刚开始只介绍了sysbench 0.5之前的版本,在了解了sysbench 0.5之后进行了补充,大部分测试和参数都是一样的,只是sysbench 0.5 在测试数据库方面更加全面丰富. 关 ...
- 使用sysbench对mysql压力测试
sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.关于这个项目的详细介绍请看:https://github.com/akopytov/sy ...
- 使用sysbench 0.5 对mysql 进行性能、压力测试
sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.目前sysbench代码托管在launchpad上,项目地址:https://launc ...
- 使用sysbench 进行msyql oltp压力测试
安装参考: https://github.com/akopytov/sysbench#linux#参数说明 需要说明的选项: mysql-db=dbtest1a:测试使用的目标数据库,这个库名要事先创 ...
- sysbench 0.5 基准测试
sysbench 介绍 SysBench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.它主要包括以下几种方式的测试: cpu性能 磁盘io性能 调度程 ...
- MySQL 常用工具sysbench/fio/tpcc等测试
为什么要压力测试采购新设备,评估新设备性能开发新项目,评估数据库容量新系统上线前,预估/模拟数据库负载更换数据库版本,评估性能变化 关注指标 CPU %wait,%user,%sys 内存 只内存读 ...
- RGMII_PHY测试笔记1 基于开发板MiS603-X25
RGMII_PHY测试笔记1 基于开发板MiS603-X25 作者:汤金元 日期:20150817 公司:南京米联电子科技有限公司 博客:http://blog.chinaaet.com/detail ...
- 【转载】Scrapy安装及demo测试笔记
Scrapy安装及demo测试笔记 原创 2016年09月01日 16:34:00 标签: scrapy / python Scrapy安装及demo测试笔记 一.环境搭建 1. 安装scrapy ...
- Upload-labs 测试笔记
Upload-labs 测试笔记 By:Mirror王宇阳 2019年11月~ 文件上传解析学习 环境要求 若要自己亲自搭建环境,请按照以下配置环境,方可正常运行每个Pass. 配置 项 配置 描述 ...
随机推荐
- 在TextView上加上下划线或中划线
在做商城项目是需要用到原价格以及降价后的价格,不可避免用到下划线或中划线 textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下 ...
- LDA-math-文本建模
http://cos.name/2013/03/lda-math-text-modeling/ 4. 文本建模 我们日常生活中总是产生大量的文本,如果每一个文本存储为一篇文档,那每篇文档从人的观察来说 ...
- 搞笑的u盘图片
- 如何通过类找到对应的jar包
ctrl+shift+T 然后输入对应类
- innodb double write buffer
两次写是innodb的一个重要特性,目的是为了保证在异常down机或者没电的情况下,保证数据的安全可靠.一次是往内存的double write buffer中写,一次是在刷共享表空间的连续128个页. ...
- 前端js,css文件合并三种方式,bat命令
前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...
- Mac下使用Automator实现截屏编辑保存
以前在Windows下使用百度或者搜狗输入法的截图工具很方便.❶快捷键(Alt+X,我设置的是这个),❷选择区域,❸编辑所选区域,包括添加文字,线条框框,调色,❹点击『✔️』选择保存位置,修改文件名保 ...
- oracle 自定义聚合函数(MAX_O3_8HOUR_ND) 计算最大的臭氧8小时滑动平均值
create or replace function MAX_O3_8HOUR_ND(value NUMBER) return NUMBER parallel_enable aggregate usi ...
- java多线程中的生产者与消费者之等待唤醒机制@Version1.0
一.生产者消费者模式的学生类成员变量生产与消费demo,第一版1.等待唤醒: Object类中提供了三个方法: wait():等待 notify():唤醒单个线程 notify ...
- Spring使用p名称空间配置属性
给XML配置文件"减肥"的另一个选择就是使用p名称空间,从 2.0开始,Spring支持使用名称空间的可扩展配置格式.这些名称空间都是基于一种XML Schema定义.事实上,我们 ...