sysbench_mysql
ref
http://seanlook.com/2016/03/28/mysql-sysbench/
测试
当执行下面这个sysbench测试mysql的时候,你不知道的可能可能是:
- 这到底是在测试读写?还是 读? 答: 只读
- --num-threads=12 啥意思? 答:就是说有12个线程在同时链接
你可以看到:这是在创建 表
Creating table 'sbtest1'...
Inserting 500000 records into 'sbtest1'
Creating table 'sbtest2'...
Inserting 500000 records into 'sbtest2'
Creating table 'sbtest3'...
..
..
..
而接下来,才是你测试的过程,你设置--max-time=120 就是说测试120s
sysbench --test=/tmp/sysbench/sysbench-0.4.12-1.1/sysbench/tests/db/oltp.lua \
--mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root \
--mysql-db=sbtest --oltp-tables-count=10 --oltp-table-size=500000 \
--report-interval=10 --oltp-dist-type=uniform --rand-init=on --max-requests=0 \
--oltp-read-only=on --oltp-skip-trx=on \
--max-time=120 --num-threads=12 prepare
[root@jiangyi01.sqa.zmf /home/ahao.mah/ALIOS_QA/tools]
#sh sysbench/sysbench_mysql.sh -d
mysql -h127.0.0.1 -P3306 -uroot
create database sbtest
sysbench 0.5: multi-threaded system evaluation benchmark
Creating table 'sbtest1'...
Inserting 500000 records into 'sbtest1'
Creating table 'sbtest2'...
Inserting 500000 records into 'sbtest2'
Creating table 'sbtest3'...
Inserting 500000 records into 'sbtest3'
Creating table 'sbtest4'...
Inserting 500000 records into 'sbtest4'
Creating table 'sbtest5'...
Inserting 500000 records into 'sbtest5'
Creating table 'sbtest6'...
Inserting 500000 records into 'sbtest6'
Creating table 'sbtest7'...
Inserting 500000 records into 'sbtest7'
Creating table 'sbtest8'...
Inserting 500000 records into 'sbtest8'
Creating table 'sbtest9'...
Inserting 500000 records into 'sbtest9'
Creating table 'sbtest10'...
Inserting 500000 records into 'sbtest10'
sysbench 0.5: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 12
Report intermediate results every 10 second(s)
Initializing random number generator from timer.
Random number generator seed is 0 and will be ignored
Threads started!
[ 10s] threads: 12, tps: 0.00, reads/s: 50022.15, writes/s: 0.00, response time: 3.90ms (95%)
[ 20s] threads: 12, tps: 0.00, reads/s: 54988.13, writes/s: 0.00, response time: 3.74ms (95%)
[ 30s] threads: 12, tps: 0.00, reads/s: 54559.99, writes/s: 0.00, response time: 3.79ms (95%)
[ 40s] threads: 12, tps: 0.00, reads/s: 55341.59, writes/s: 0.00, response time: 3.65ms (95%)
[ 50s] threads: 12, tps: 0.00, reads/s: 55481.02, writes/s: 0.00, response time: 3.65ms (95%)
[ 60s] threads: 12, tps: 0.00, reads/s: 55929.09, writes/s: 0.00, response time: 3.56ms (95%)
[ 70s] threads: 12, tps: 0.00, reads/s: 55855.21, writes/s: 0.00, response time: 3.63ms (95%)
[ 80s] threads: 12, tps: 0.00, reads/s: 55590.89, writes/s: 0.00, response time: 3.62ms (95%)
[ 90s] threads: 12, tps: 0.00, reads/s: 55348.11, writes/s: 0.00, response time: 3.68ms (95%)
[ 100s] threads: 12, tps: 0.00, reads/s: 55783.70, writes/s: 0.00, response time: 3.62ms (95%)
[ 110s] threads: 12, tps: 0.00, reads/s: 55622.30, writes/s: 0.00, response time: 3.66ms (95%)
[ 120s] threads: 12, tps: 0.00, reads/s: 55634.92, writes/s: 0.00, response time: 3.64ms (95%)
OLTP test statistics:
queries performed:
read: 6601616
write: 0
other: 0
total: 6601616
transactions: 0 (0.00 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 6601616 (55012.22 per sec.)
other operations: 0 (0.00 per sec.)
General statistics:
total time: 120.0027s
total number of events: 471544
total time taken by event execution: 1439.0586s
response time:
min: 2.20ms
avg: 3.05ms
max: 260.74ms
approx. 95 percentile: 3.69ms
Threads fairness:
events (avg/stddev): 39295.3333/1154.93
execution time (avg/stddev): 119.9215/0.00
[root@jiangyi01.sqa.zmf /home/ahao.mah]
#top -Hp 3997

混合读写
读写测试还是用oltp.lua,只需把--oltp-read-only等于off。
只更新
如果基准测试的时候,你只想比较两个项目的update(或insert)效率,那可以不使用oltp脚本,而直接改用update_index.lua:
./bin/sysbench --test=./share/tests/db/update_index.lua \
--mysql-host=10.0.201.36 --mysql-port=8066 --mysql-user=ecuser --mysql-password=ecuser \
--mysql-db=dbtest1a --oltp-tables-count=10 --oltp-table-size=500000 \
--report-interval=10 --rand-init=on --max-requests=0 \
--oltp-read-only=off --max-time=120 --num-threads=128 \
[ prepare | run | cleanup ]
此时像oltp-read-only=off许多参数都失效了。需要说明的是这里 (非)索引更新,不是where条件根据索引去查找更新,而是更新索引列上的值。
结果解读
sysbench 0.5: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 128
Report intermediate results every 20 second(s)
Initializing random number generator from timer.
Random number generator seed is 0 and will be ignored
Initializing worker threads...
Threads started!
[ 20s] threads: 128, tps: 2354.54, reads: 33035.89, writes: 9423.39, response time: 66.80ms (95%), errors: 0.00, reconnects: 0.00
[ 40s] threads: 128, tps: 2377.75, reads: 33274.26, writes: 9507.55, response time: 66.88ms (95%), errors: 0.00, reconnects: 0.00
[ 60s] threads: 128, tps: 2401.35, reads: 33615.30, writes: 9607.40, response time: 66.40ms (95%), errors: 0.00, reconnects: 0.00
[ 80s] threads: 128, tps: 2381.20, reads: 33331.50, writes: 9522.55, response time: 67.30ms (95%), errors: 0.00, reconnects: 0.00
[ 100s] threads: 128, tps: 2388.85, reads: 33446.10, writes: 9556.35, response time: 67.00ms (95%), errors: 0.00, reconnects: 0.00
[ 120s] threads: 128, tps: 2386.40, reads: 33421.35, writes: 9545.35, response time: 66.94ms (95%), errors: 0.00, reconnects: 0.00
OLTP test statistics:
queries performed:
read: 4003048 //总select数量
write: 1143728 //总update、insert、delete语句数量
other: 571864 //commit、unlock tables以及其他mutex的数量
total: 5718640
transactions: 285932 (2382.10 per sec.) //通常需要关注的数字(TPS)
read/write requests: 5146776 (42877.85 per sec.)
other operations: 571864 (4764.21 per sec.)
ignored errors: 0 (0.00 per sec.) //忽略的错误数
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 120.0334s //即max-time指定的压测实际
total number of events: 285932 //总的事件数,一般与transactions相同
total time taken by event execution: 15362.6623s
response time:
min: 17.60ms
avg: 53.73ms //95%的语句的平均响应时间
max: 252.90ms
approx. 95 percentile: 66.88ms
Threads fairness:
events (avg/stddev): 2233.8438/9.04
execution time (avg/stddev): 120.0208/0.01
我们一般关注的用于绘图的指标主要有:
- response time avg: 平均响应时间。(后面的95%的大小可以通过--percentile=98的方式去更改)
- transactions: 精确的说是这一项后面的TPS 。但如果使用了-oltp-skip-trx=on,这项事务数恒为0,需要用total number of events 去除以总时间,得到tps(其实还可以分为读tps和写tps)
- read/write requests: 用它除以总时间,得到吞吐量QPS
- 当然还有一些系统层面的cpu,io,mem相关指标
- sysbench还可以对文件系统IO测试,CPU性能测试,以及内存分配与传输速度测试,这里就不介绍了。
总结起来sysbench的缺点就是,模拟的表结构太简单,不像tpcc-mysql那样完整的事务系统。但对于性能压测对比还是很有用的,因为sysbench使用的环境参数限制是一样的。
sysbench_mysql的更多相关文章
- 使用sysbench测试mysql及postgresql(完整版)
使用sysbench测试mysql及postgresql(完整版) 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14592166.html 前言 使用sysbe ...
随机推荐
- Apache配置基于域名的虚拟主机
一.设定 模拟域名 www.wang.org.blog.wang.org.bbs.wang.org 网站文件夹 /var/html/www./var/html/blog./var/html/bbs ...
- hdu 4888 Redraw Beautiful Drawings(最大流,判环)
pid=4888">http://acm.hdu.edu.cn/showproblem.php?pid=4888 加入一个源点与汇点,建图例如以下: 1. 源点 -> 每一行相应 ...
- luogu 3415 祭坛
题目大意: 在平面上,有 n 个水晶柱,每个水晶柱可以用一个点表示 如果 4 个水晶柱依次相连可以构成一个四边形,满足其两条对角线分别平行于 x 轴和 y 轴,并且对角线的交点位于四边形内部(不包括边 ...
- bzoj 4537 最小公倍数
给定一张N个顶点M条边的无向图 每条边上带有权值 所有权值都可以分解成2^a*3^b的形式 q个询问,每次询问给定四个参数u.v.a和b,请你求出是否存在一条顶点u到v之间的路径,使得路径依次经过的边 ...
- 洛谷P2059 [JLOI2013]卡牌游戏
题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把 ...
- Android 数据库
官方文档:https://developer.android.com/training/basics/data-storage/databases.html#WriteDbRow 原帖:http:// ...
- PCB Winform使用谷歌webkit内核 应用
我们Winfrom界面嵌入网页最常用的是WebBrowser控件,因为微软自带的,使用方便,但在实际使用起来,会遇到各种麻烦(JS,不兼容问题,渲染等问题) 而实际WebBrowser控件内核是微软的 ...
- skiing 暴力搜索 + 动态规划
我的代码上去就是 直接纯粹的 暴力 . 居然没有超时 200ms 可能数据比较小 一会在优化 #include<stdio.h> #include<string.h ...
- SCOI2014总结
似乎还没有写过SCOI的总结,今天补上,权当填坑. PS:CDQZ的看到了不要到处黑 SCOI-2014应该算是我的小高考,感觉拿住一本招的瓶颈就在这里.加之NOIp只有400分有点拖后腿,所以很早就 ...
- 阿里邮箱绑定Foxmail失败的解决办法
收件服务器地址: POP 服务器地址:pop3.mxhichina.com 端口110,SSL 加密端口995 或 IMAP 服务器地址:imap.mxhichina.com 端口143,SSL 加密 ...