天天看点

Mysql 压力测试工具-mysqlslap

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

man mysqlslap 也可以看到有下面一条示例:

  1. mysqlslap --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" --query="SELECT * FROM a" --concurrency=50 --iterations=200 
  1. -a, --auto-generate-sql  自动生成测试表和数据 
  2. --auto-generate-sql-load-type=name  测试语句的类型。取值包括:read,key,write,update和mixed(多种混合,默认)。 
  3. -C, --compress  如果服务器和客户端支持都压缩,则压缩信息传递 
  4. --commit=N  多少条DML后提交一次 
  5. --create-schema=name 指定数据库测试,不要和:auto-generate-sql 参数一起使用!
  6. --detach=N  执行N条语句后断开重连 
  7. --concurrency  指定并发数 
  8. -T, --debug-info  打印内存和CPU的信息 
  9. --number-of-queries=1000  指定查询总次数 
  10. -i, --iterations=5  重复多次(迭代多次) 
  11. -e, --engine=name  指定引擎  
  12. --only-print  只输出测试语句而不实际执行 
  13. -q, --query=name  使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。 
  1. [root@localhost ~]# mysqlslap --auto-generate-sql --concurrency=50,100,500 --number-of-queries=1000 --iterations=5 --debug-info --engine=myisam,innodb -uroot -p
  2. Enter password:
  3. Benchmark 
  4.     Running for engine myisam 
  5.     Average number of seconds to run all queries: 0.108 seconds 
  6.     Minimum number of seconds to run all queries: 0.083 seconds 
  7.     Maximum number of seconds to run all queries: 0.119 seconds 
  8.     Number of clients running queries: 50 
  9.     Average number of queries per client: 20 
  10. Benchmark 
  11.     Running for engine myisam 
  12.     Average number of seconds to run all queries: 0.127 seconds 
  13.     Minimum number of seconds to run all queries: 0.094 seconds 
  14.     Maximum number of seconds to run all queries: 0.150 seconds 
  15.     Number of clients running queries: 100 
  16.     Average number of queries per client: 10 
  17. Benchmark 
  18.     Running for engine myisam 
  19.     Average number of seconds to run all queries: 0.182 seconds 
  20.     Minimum number of seconds to run all queries: 0.161 seconds 
  21.     Maximum number of seconds to run all queries: 0.204 seconds 
  22.     Number of clients running queries: 500 
  23.     Average number of queries per client: 2 
  24. Benchmark 
  25.     Running for engine innodb 
  26.     Average number of seconds to run all queries: 0.305 seconds 
  27.     Minimum number of seconds to run all queries: 0.294 seconds 
  28.     Maximum number of seconds to run all queries: 0.322 seconds 
  29.     Number of clients running queries: 50 
  30.     Average number of queries per client: 20 
  31. Benchmark 
  32.     Running for engine innodb 
  33.     Average number of seconds to run all queries: 0.315 seconds 
  34.     Minimum number of seconds to run all queries: 0.304 seconds 
  35.     Maximum number of seconds to run all queries: 0.338 seconds 
  36.     Number of clients running queries: 100 
  37.     Average number of queries per client: 10 
  38. Benchmark 
  39.     Running for engine innodb 
  40.     Average number of seconds to run all queries: 0.515 seconds 
  41.     Minimum number of seconds to run all queries: 0.485 seconds 
  42.     Maximum number of seconds to run all queries: 0.548 seconds 
  43.     Number of clients running queries: 500 
  44.     Average number of queries per client: 2 
  45. User time 2.48, System time 2.47 
  46. Maximum resident set size 27284, Integral resident set size 0 
  47. Non-physical pagefaults 55681, Physical pagefaults 0, Swaps 0 
  48. Blocks in 0 out 0, Messages in 0 out 0, Signals 0 
  49. Voluntary context switches 101688, Involuntary context switches 95927 

继续阅读