zoukankan      html  css  js  c++  java
  • sysbench_mysql

    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使用的环境参数限制是一样的。

  • 相关阅读:
    Atitit ..Net Framework sdk 3.0 3.5 4.04.5 4.6 4.7  .net core版本新特性 v2 s22 1. 新特性来源于 down ms 官方网站 1
    Atitit 工业体系的分类 目录 1. 有多少个灰色 黑色行业?? 1 2. 30个制造业行业细分 制造业下面还有更精细的划分,见下表1.2: 2 3. 艾提拉需要掌握的体系 3 4. 艾提拉需要
    Atitit 提升开发效率 通道化驱动化数据操作与查询 目录 1. xiaoguo 1 1.1. Atitit mybatis 简化开发与提升开发效率法 1 2. Code 1 3. ref 4
    Atitit 常见聚合运算与算法 目录 1.1. 单行函数,vs 那就是聚合函数 1 1.2. 聚合分类 哈希聚合 标量聚合 流聚合 1 1.3. 常见聚合函数 mysql oracle等 1 r
    Atitit git 使用法v2 目录 1. Git客户端工具 1 1.1. Tortoisegit git gui 图形化工具。。 1 1.2. Ide中的git插件(eclipse idea
    Atitit 提升开发效率的方法 提升语言级别 目录 1. 提升语言级别到4gl 1 1.1. 语言的代际关系 sql 》script 》java 1 1.2. 使用4gl dsl语言与api 1
    Atitit mybatis返回多个数据集总结 目录 1.1. 配置handleResult接受,但是只有第一个select语句的结果 1 2. 配置resultMap ok 1 2.1. 调
    Atitit pdf转文本 pdf2txt v4 t83.docx Atitit pdf转文本 pdfutil 目录 1.1. Pdfbox cmd 模式 TextToPDF 1 1.2. Pdf
    Atitit mybatis 简化开发与提升开发效率法 目录 1.1. 使用注解模式代替xml模式 1 1.2. 使用通用mapper代替专用mapper 1 1.3. 使用js等脚本语言来输出sq
    Atitit mq的AMQP 协议 STOMP2 、MQTT3 等协议  MQTT,XMPP,STOMP,AMQP,WAMP 目录 1. AMQP in a Nutshell 1 2. MQTT概述
  • 原文地址:https://www.cnblogs.com/muahao/p/6291119.html
Copyright © 2011-2022 走看看