mysqlslap
MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端 访问mysql来执行测试。 "man mysqlslap" 可以看到有下面一条示例:
mysqlslap --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" --query="SELECT * FROM a" --concurrency=50 --iterations=200 -uroot -p
常用参数示例
注: 以下示例中 "-uroot -p" 指定访问数据库的用户为root,需要输入密码。 和 mysql 命令的参数含义一致,可自行修改。
指定并发数: —concurrency
$ mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debug-info -uroot -p
指定查询总次数: —number-of-queries
见上例
重复多次(迭代多次): —iterations
$ mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --debug-info -uroot -p
指定引擎: —engine
$ mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info
输出语句而不执行: —only-print
$ mysqlslap -a --only-print -uroot -p
参数参考:
-auto-generate-sql, -a 自动生成测试表和数据(用系统自己生成的SQL语句来测试) -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 -number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数) -query=name,-q 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。 -create-schema 测试的schema,MySQL中schema也就是database -commint=N 多少条DML后提交一次 -compress, -C 如果服务器和客户端支持都压缩,则压缩信息传递 -concurrency=N, -c N 并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者–delimiter参数指定的值做为分隔符 -engine=engine_name, -e engine_name 创建测试表所使用的存储引擎,可指定多个 -iterations=N, -i N 测试执行的迭代次数 -detach=N 执行N条语句后断开重连 --delimiter=";" 执行分隔符 -debug-info, -T 打印内存和CPU的信息 -only-print 只打印测试语句而不实际执行
mysqladmin
动态监测 MySQL 数据库性能,30秒一次
$ mysqladmin -uroot -p ext -ri30
select benchmark
使用这个语句可以做压力测试:
select benchmark( 5000000, md5( 'test' ) );
