mysqlslap应用实战

上一篇 / 下一篇  2013-04-24 09:38:48 / 个人分类:mysql

       MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试,使用起来非常的简单。通过mysqlslap --help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方手册

 

       对于压力测试讲,对应mysqlslap主要参数为:

       --concurrency,-c,并发数(--concurrency=10,如果需要多种情况可以写为--concurrency=10,50,100

       --engines,引擎(--engines=ISAM,如果要测试多种引擎可以写用--engines=ISAM,HEAP,MyISAM

       注 --concurrency和 --engines同时使用,如--concurrency=10,50,100 --engines=ISAM,HEAP,MyISAM就会生成9组测试数据,确实很方便。

       --iterations,-i,迭代的实验次数,主要作用是为了提高准确性


      sql语句及构造:

      --create-schema,指定需要测试的数据库(--create-schema='abbottd_9wiz_test')

      注 每次测试时都要带上数据库的连接 -uroot -p1111

      --auto-generate-sql,-a ,自动生成测试表和数据

      --auto-generate-sql-load-type=type,测试语句的类型。取值包括read,key,write,update和mixed(默认)

      --number-char-cols=N,-x N,自动生成的测试表中包含多个字符类型的列,默认是1

      --number-int-cols=N,-y N,自动生成的测试表中包含多个数字类型的列,默认是1

      --auto-generate-sql-add-autoincrement=N,代表对生成的表自动添加auto_increment列,从5.1.18版本开始

      --query='sql',-q,使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。

      --commit=N,多少条DML后提交一次

      --commpress,-C,如果服务器和客户端支持压缩,则压缩信息传递

      --detach=N,执行N条语句后断开重连

      --number-of-queries=N,总的测试查询次数

      注 例如--concurrency=100 --number-of-queries=1000 结果为每个用户查询10次所用的时间和

      

      信息打印:

      --debug-info,-T,打印内存和cpu信息

              system time:在内核态下花费的时间

              user time:在用户态花费的时间
              max resident size:占用的最大物理内存(驻留内存)
              Non-physical pagefaults:直接通过回收脏页来解决IO读写而产生的缺页中断的次数
              involuntary context switch:线程因为时间片到了或更高优先级的线程抢占导致的切换的次数
              voluntary context switch:线程主动让出处理器导致的切换的次数,很可能是等待IO

      --only-print,只打印测试语句而不实际执行



自动构造sql测试:

       测试的过程需要生成测试表,插入测试数据,这个mysqlslap可以自动生成,默认生成一个mysqlslap的schema,这里要注意了自动生成时千万不要再使用–create-schema指定已经存在的库,否则后果可能很严重。可以用–only-print来打印实际的测试过 程

       shell> msyqlslap -a --only-print

          CREATE TABLE `t1` (intcol1 INT(32) ,charcol1 VARCHAR(128));

INSERT INTO t1 VALUES (1804289383,'mxvtvmC9127qJNm06sGB8R92q2j7vTiiITRDGXM9ZLzkdekbWtmXKwZ2qG1llkRw5m9DHOFilEREk3q7oce8O3BEJC0woJsm6uzFAEynLH2xCsw1KQ1lT4zg9rdxBL');

          .........................................................................................生成了很多条记录

          DROP SCHEMA IF EXISTS `mysqlslap`;

          如果我们使用msyqlslap -a --only-print -–create-schema='abbottd_9wiz_test' 这样我们的abbottd_9wiz_test库就直接被删除了,所以说后果很严重。


自定义sql测试:
    [abbottd@dev ~]$ mysqlslap -c 5,20,50 -i 10 --query='select * from invoice_vbv' --create-schema='abbottd_9wiz_test' -u9wiz_test -p21w9 --dubug-info
Benchmark
        Average number of seconds to run all queries: 0.839 seconds
        Minimum number of seconds to run all queries: 0.690 seconds
        Maximum number of seconds to run all queries: 0.996 seconds
        Number of clients running queries: 5
        Average number of queries per client: 1on
Benchmark
        Average number of seconds to run all queries: 2.109 seconds
        Minimum number of seconds to run all queries: 1.910 seconds
        Maximum number of seconds to run all queries: 3.403 seconds
        Number of clients running queries: 20
        Average number of queries per client: 1
Benchmark
        Average number of seconds to run all queries: 6.277 seconds
        Minimum number of seconds to run all queries: 5.398 seconds
        Maximum number of seconds to run all queries: 9.661 seconds
        Number of clients running queries: 50
        Average number of queries per client: 1
User time 176.46, System time 166.98
Maximum resident set size 6786812, Integral resident set size 0
Non-physical pagefaults 26785899, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 9111777, Involuntary context switches 19857
上面是进行对abbottd_9wiz_test表中invoice_vbv表的查询,分别在迸发2、20、50情况下跌代10次的情况。

TAG: mysqlslap

 

评分:0

我来说两句

Open Toolbar