ref

http://seanlook.com/2016/03/28/mysql-sysbench/

测试

当执行下面这个sysbench测试mysql的时候,你不知道的可能可能是:

  1. 这到底是在测试读写?还是 读? 答: 只读
  2. --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

我们一般关注的用于绘图的指标主要有:

  1. response time avg: 平均响应时间。(后面的95%的大小可以通过--percentile=98的方式去更改)
  2. transactions: 精确的说是这一项后面的TPS 。但如果使用了-oltp-skip-trx=on,这项事务数恒为0,需要用total number of events 去除以总时间,得到tps(其实还可以分为读tps和写tps)
  3. read/write requests: 用它除以总时间,得到吞吐量QPS
  4. 当然还有一些系统层面的cpu,io,mem相关指标
  5. sysbench还可以对文件系统IO测试,CPU性能测试,以及内存分配与传输速度测试,这里就不介绍了。

总结起来sysbench的缺点就是,模拟的表结构太简单,不像tpcc-mysql那样完整的事务系统。但对于性能压测对比还是很有用的,因为sysbench使用的环境参数限制是一样的。

sysbench_mysql的更多相关文章

  1. 使用sysbench测试mysql及postgresql(完整版)

    使用sysbench测试mysql及postgresql(完整版) 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14592166.html 前言 使用sysbe ...

随机推荐

  1. ScrollView在RelativeLayout失效问题

    今天在做项目的时候,要在ScrollView下方加入一个button.我选择RelativeLayout作为父布局,可是加上去之后,导致ScrollView中仅仅显示第一个子View,这样的问题通常是 ...

  2. mysql20170410练习代码+笔记

    今天的几道高级sql查询真的挺难的,感觉好像视频里讲过,当时也没有练,已经淡化了很多,sql还是要多练习啊!确实逻辑性挺强的. SELECT studentResult,studentNO FROM ...

  3. win7下远程登录ubuntu mysql

    网络上找了很久的一个办法,不然老是远程访问不了linux mysql. 原先一直用root登录,进不了,新建一个root1倒是可以了. 安装好mysql后,按以下步骤: 1.将vim /etc/mys ...

  4. 利用SSL For Free工具3分钟获取Let's Encrypt免费SSL证书

    https://www.sslforfree.com/

  5. 马拉车算法(Manacher's Algorithm)

    这是悦乐书的第343次更新,第367篇原创 Manacher's Algorithm,中文名叫马拉车算法,是一位名叫Manacher的人在1975年提出的一种算法,解决的问题是求最长回文子串,神奇之处 ...

  6. Vue Router的params和query传参的使用和区别

    vue页面跳转有两种方式分别是:name和path this.$router.push({name: 'HelloWorld2}) this.$router.push({path: '/hello-w ...

  7. ACM算法目录

    数据结构 栈,队列,链表 •哈希表,哈希数组 •堆,优先队列 双端队列 可并堆 左偏堆 •二叉查找树 Treap 伸展树 •并查集 集合计数问题 二分图的识别 •平衡二叉树 •二叉排序树 •线段树 一 ...

  8. CF 351A - Jeff and Rounding DP

    http://codeforces.com/problemset/problem/351/C 题意:有2*n个浮点数a1,a2,a3...a2*n,把他们分成n队,对于每对<A,B>,对A ...

  9. 在vSphere Client上安装虚拟机工具VMware Tools

    一.什么是虚拟机工具 VMware Tools是一套安装在虚拟机操作系统中的实用程序.VMware Tools可提高虚拟机的性能,并在 VMware产品中实现多个易于使用的功能. 尽管客户机操作系统在 ...

  10. 354 Russian Doll Envelopes 俄罗斯娃娃信封

    You have a number of envelopes with widths and heights given as a pair of integers (w, h). One envel ...