MySQL自带的测试工具mysqlslap
参考
mysqlslap运行三部曲
1·创建库、表和数据,这个过程用一个客户端连接完成
2·运行压力测试,这个过程可以有很多客户端连接
3·清理数据,这个过程用一个客户端连接完成
举例
1·自己提供SQL语句,设置分隔符为";",50个客户端并发,可以设置多个并发,用逗号隔开,如10,20,30,每个客户端重复进行200次查询
mysqlslap
--delimiter=";" \
--create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)"
\
--query="SELECT * FROM a" --concurrency=50 --iterations=200
2·让mysqlslap自己生成SQL语句,并创建两个int列和三个varchar列的表。用5个客户端重复20次查询。不创建表或者插入数据(换言之,用test库和数据)
mysqlslap
--concurrency=5 --iterations=20 \
--number-int-cols=2
--number-char-cols=3 \
--auto-generate-sql
3·告诉mysqlslap从指定的sql文件中读取语句。
mysqlslap
--concurrency=5 \
--iterations=5 --query=query.sql --create=create.sql
\
--delimiter=";"
帮助信息
-a, --auto-generate-sql自动生成SQL
--auto-generate-sql-add-autoincrement自动生成SQL语句,并添加自动增长列
--auto-generate-sql-guid-primary
自动产生guid格式的主键
--auto-generate-sql-load-type=name指定测试的类型mixed,update,write,key,read,默认是mixed
--auto-generate-sql-write-number=#每个线程中产生多少个insert,默认值100
--commit=#X个语句后,执行一次commit
-C, --compress压缩
-c,
--concurrency=name并发连接线程数,多个并发用逗号隔开,例如--concurrency=10,50,100
--create=namename指定一个sql文件或者sql语句,用来建表
--create-schema=name创建一个测试用的架构,即MySQL下的库
-e,
--engine=name指定存储引擎
-h, --host=name连接主机
-i, --iterations=#重复执行测试的次数
-x,
--number-char-cols=name创建测试表的char型字段数量
-y,
--number-int-cols=name创建测试表的int型字段数
--number-of-queries=#总的测试查询次数(并发客户数×每客户查询次数)
--iterations=N, -i N测试执行的迭代次数
--detach=N执行N条语句后断开重连
--debug-info, -T打印内存和CPU的信息
--only-print只打印测试语句而不实际执行