zoukankan      html  css  js  c++  java
  • 用mysqlslap压测mysql

    参考文献:http://my.oschina.net/costaxu/blog/108568

    上面网友详细的列举了用mysqlslap对mysql的压力测试结果,我也照葫芦画瓢试了一次,结果如下:

    以下命令代表:用10个并发连接,对一个有10个int列,10个varchar列,两个索引的表进行写操作

    mysqlslap   --concurrency=10 --iterations=1  --number-int-cols=10  --number-char-cols=10 -a --auto-generate-sql-add-autoincrement --number-of-queries=5000  --auto-generate-sql-load-type=write -auto-generate-sql-secondary-indexex=2  --engine=myisam,innodb -h10.210.214.93 -P3306 -uroot -proot --debug-info

    结果:

    Benchmark
            Running for engine myisam
            Average number of seconds to run all queries: 0.694 seconds
            Minimum number of seconds to run all queries: 0.694 seconds
            Maximum number of seconds to run all queries: 0.694 seconds
            Number of clients running queries: 10
            Average number of queries per client: 500
    
    Benchmark
            Running for engine innodb
            Average number of seconds to run all queries: 3.446 seconds
            Minimum number of seconds to run all queries: 3.446 seconds
            Maximum number of seconds to run all queries: 3.446 seconds
            Number of clients running queries: 10
            Average number of queries per client: 500

    TPS:

     myisam=7205

     innodb=1451

    通过改变参数--concurrency=50和--concurrency=100来更改并发数,分别试验两次,结果如下:

    mysqlslap   --concurrency=50 --iterations=1  --number-int-cols=10  --number-char-cols=10 -a --auto-generate-sql-add-autoincrement --number-of-queries=50000  --auto-generate-sql-load-type=write -auto-generate-sql-secondary-indexex=2  --engine=myisam,innodb -h10.210.214.93 -P3306 -uroot -proot --debug-info
    
    Benchmark
            Running for engine myisam
            Average number of seconds to run all queries: 8.991 seconds
            Minimum number of seconds to run all queries: 8.991 seconds
            Maximum number of seconds to run all queries: 8.991 seconds
            Number of clients running queries: 50
            Average number of queries per client: 1000
    
    Benchmark
            Running for engine innodb
            Average number of seconds to run all queries: 46.858 seconds
            Minimum number of seconds to run all queries: 46.858 seconds
            Maximum number of seconds to run all queries: 46.858 seconds
            Number of clients running queries: 50
            Average number of queries per client: 1000
    Benchmark
            Running for engine myisam
            Average number of seconds to run all queries: 9.687 seconds
            Minimum number of seconds to run all queries: 9.687 seconds
            Maximum number of seconds to run all queries: 9.687 seconds
            Number of clients running queries: 50
            Average number of queries per client: 1000
    
    Benchmark
            Running for engine innodb
            Average number of seconds to run all queries: 57.171 seconds
            Minimum number of seconds to run all queries: 57.171 seconds
            Maximum number of seconds to run all queries: 57.171 seconds
            Number of clients running queries: 50
            Average number of queries per client: 100
    
    
    mysqlslap   --concurrency=50 --iterations=1  --number-int-cols=10  --number-char-cols=10 -a --auto-generate-sql-add-autoincrement --number-of-queries=50000  --auto-generate-sql-load-type=write -auto-generate-sql-secondary-indexex=2  --engine=myisam,innodb -h10.210.214.93 -P3306 -uroot -proot --debug-info
    
    Benchmark
            Running for engine myisam
            Average number of seconds to run all queries: 7.060 seconds
            Minimum number of seconds to run all queries: 7.060 seconds
            Maximum number of seconds to run all queries: 7.060 seconds
            Number of clients running queries: 100
            Average number of queries per client: 500
    
    Benchmark
            Running for engine innodb
            Average number of seconds to run all queries: 44.711 seconds
            Minimum number of seconds to run all queries: 44.711 seconds
            Maximum number of seconds to run all queries: 44.711 seconds
            Number of clients running queries: 100
            Average number of queries per client: 500
    Benchmark
            Running for engine myisam
            Average number of seconds to run all queries: 6.730 seconds
            Minimum number of seconds to run all queries: 6.730 seconds
            Maximum number of seconds to run all queries: 6.730 seconds
            Number of clients running queries: 100
            Average number of queries per client: 500
    
    Benchmark
            Running for engine innodb
            Average number of seconds to run all queries: 39.591 seconds
            Minimum number of seconds to run all queries: 39.591 seconds
            Maximum number of seconds to run all queries: 39.591 seconds
            Number of clients running queries: 100
            Average number of queries per client: 500

    并发50 myisam   TPS= 5354

    并发50 innodb    TPS= 961

    并发100 myisam TPS= 7252

    并发100 innodb  TPS= 1186

    下面又测试了读的性能:

    mysqlslap   --concurrency=50 --iterations=2  --number-int-cols=10  --number-char-cols=10 -a --auto-generate-sql-add-autoincrement --auto-generate-sql-unique-query-number=10000  --auto-generate-sql-load-type=key --number-of-queries=50000  --engine=myisam,innodb -h10.210.214.93 -P3306 -uroot -proot --debug-info
    
    Benchmark
            Running for engine myisam
            Average number of seconds to run all queries: 4.172 seconds
            Minimum number of seconds to run all queries: 4.071 seconds
            Maximum number of seconds to run all queries: 4.274 seconds
            Number of clients running queries: 50
            Average number of queries per client: 1000
    
    Benchmark
            Running for engine innodb
            Average number of seconds to run all queries: 4.094 seconds
            Minimum number of seconds to run all queries: 4.070 seconds
            Maximum number of seconds to run all queries: 4.118 seconds
            Number of clients running queries: 50
            Average number of queries per client: 1000
    
    mysqlslap   --concurrency=100 --iterations=2  --number-int-cols=10  --number-char-cols=10 -a --auto-generate-sql-add-autoincrement --auto-generate-sql-unique-query-number=50000  --auto-generate-sql-load-type=key --number-of-queries=50000  --engine=myisam,innodb -h10.210.214.93 -P3306 -uroot -proot --debug-info
    Benchmark
            Running for engine myisam
            Average number of seconds to run all queries: 4.212 seconds
            Minimum number of seconds to run all queries: 4.134 seconds
            Maximum number of seconds to run all queries: 4.290 seconds
            Number of clients running queries: 100
            Average number of queries per client: 500
    
    Benchmark
            Running for engine innodb
            Average number of seconds to run all queries: 4.232 seconds
            Minimum number of seconds to run all queries: 4.125 seconds
            Maximum number of seconds to run all queries: 4.339 seconds
            Number of clients running queries: 100
            Average number of queries per client: 500

    具体数值不用算了,TPS都在10000+

    结论:

    myisam和innodb两种引擎下,读时性能差不多,写时myisam比innodb要强很多

    另外,读时TPS=10000+,这个结果我压根就不信,完全随机的读硬盘的话,硬盘的IOPS大概也就几百左右,因此10000+的结果原因可能为:

    a: 测试表中数据太少,数据基本都被缓存了,直接都是从缓存中读的数据

    b:mysqlslap生成的SQL语句不够随机,读时永远都是那么几条数据,肯定就命中缓存了

    所以以上结果仅供参考罢了。。。。

    参考文献中的作者思路很清晰,但用并发数=2来测试未免有点太小气了,所以他的数值肯定没有什么参考价值了

  • 相关阅读:
    搭建公共DNS服务器[转]
    zabbix3.4 yum快速安装
    centos7安装图形化界面并远程连接
    记一次排查黑客入侵
    centos6安装图形界面并远程连接
    树莓派做NAS
    document.documentElement.scrollTop||document.body.scrollTop;
    矩阵连乘
    母函数详解
    Catalan 数
  • 原文地址:https://www.cnblogs.com/hxdoit/p/3500826.html
Copyright © 2011-2022 走看看