使用Mysqlslap对Mysql进行压力测试

概述

     mysql5.1版本之后Mysql服务器自带的基准测试工具,随Mysql一起安装,可以模拟服务器负载,并输出相关的统计信息,可以指定或自动生成查询语句。

语法

# mysqlslap {options}

常用参数说明

  • --auto-generate-sql 由系统自动生成SQL脚本和相关数据进行测试
  • --auto-generate-sql-add-autoincrement 在生成的表中增加自增ID
  • --auto-generate-sql-load-type 指定测试中使用的查询类型,默认是混合的
  • --auto-generate-sql-write-number 指定初始化数据时生成的数据量,默认100行
  • --concurrency 指定并发线程的数量
  • --engine 指定测试表的存储引擎,用逗号分开多个存储引擎
  • --no-drop 指定不清理测试数据
  • --iterations 指定测试运行的次数
  • --number-of-queries 指定每一个线程执行的查询数量
  • --debug-info 指定输出额外的内存与cpu的统计信息
  • --number-int-cols 指定测试表中包含INT类型列的数量
  • --number-char-cols 指定测试表中包含的varchar类型的数量
  • --create-schema 指定了用于执行测试的数据库的名字
  • --query 指定自定义SQL脚本
  • --only-print 并不运行测试脚本,而是把生成的脚本打印出来

示例

# mysqlslap
   --concurrency=50,300 // 并发50,300个进程
   --iterations=3 // 测试运行次数
   --number-int-cols=5 // 整型类型列数量
   --number-char-cols=5 // varchar类型列数量
   --auto-generate-sql // 自动生成sql
   --auto-generate-sql-add-autoincrement // 添加自增ID
   --engine=innodb,myisam // 测试myisam,innodb引擎
   --number-of-queries=10  // 查询次数
   --create-schema=sbtest // 测试的数据库名
   -uroot -p

使用Mysqlslap对Mysql进行压力测试

 

单线程测试。测试做了什么。
# mysqlslap -a -uroot -p
多线程测试。使用–concurrency来模拟并发连接。
# mysqlslap -a -c 100 -uroot -p
迭代测试。用于需要多次执行测试得到平均值。
# mysqlslap -a -i 10 -uroot -p
测试同时不同的存储引擎的性能进行对比:
# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uroot -p
执行一次测试,分别50和100个并发,执行1000次总查询:
# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debug-info -uroot -p