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语句来测试)站长教学网 eduyo.com
-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' ) );(责任编辑:ken)
