当前位置: 首页 > 工具软件 > mysqlslap > 使用案例 >

mysql性能测试工具msyqlslap_Mysql压力测试工具 - Mysqlslap使用教程

太叔京
2023-12-01

MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试,

使用起来非常的简单。通过mysqlslap --help可以获得可用的选项,这里列一些主要的参数,更详细的说明参

考官方手册。

--auto-generate-sql, -a

自动生成测试表和数据

--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='SQL',(--query缩写为-q)

使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。

--create-schema

测试的schema,MySQL中schema也就是database,指定需要测试地数据库

--ommint=N

多少条DML后提交一次

--compress, -C

如果服务器和客户端支持都压缩,则压缩信息传递

–concurrency=N, -c N

并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者–delimiter参数指定的值做为分隔符

--engine=engine_name, -e engine_name

创建测试表所使用的存储引擎,可指定多个,可以测试sql在不同引擎下地效果

--terations=N, -i N

测试执行的迭代次数

--detach=N

执行N条语句后断开重连

--debug-info, -T

打印内存和CPU的信息

--only-print

只打印测试语句而不实际执行

下面是我在ubuntu上测试的一个例子:

root@Cyrec-desktop:~# mysqlslap --concurrency=50,100 --number-of-queries 1000 --debug-info --create-schema='student' --iterations=5 --engine=myisam,innodb --query='select * from student limit 20' -uroot -pxxxx > log.txt

解释一下: --concurrency=50,100分别模拟50和100个并发的情况,--number-of-queries 总共执行查询

1000次, --create-schema='student'设置执行sql的数据库,开始测试地时候没写这个选项报如下错误:

mysqlslap: Error when connecting to server: 1049 Unknown database 'mysqlslap',找了很久才发现

原来我开始没看到 --create-schema参数可以选择数据库,将选择数据库写成了sql'use student;'放入--query

参数中,结果就报错 --iterations=5设置迭代数,可以增加准确度。 --query='select * from student limit 20'测

试的sql语句(我是随便写的)当然还可以执行一些事务处理的sql不过就要申明使用innodb引擎。-u root

-pxxxx输入数据库的用户名密码 ,最后 > log.txt是将结果导出到文件中,也可以不导出直接在终端查看结果。

测试地结果如下:

Benchmark

Running for engine myisam

Average number of seconds to run all queries: 0.392 seconds

Minimum number of seconds to run all queries: 0.338 seconds

Maximum number of seconds to run all queries: 0.443 seconds

Number of clients running queries: 50

Average number of queries per client: 20

Benchmark

Running for engine myisam

Average number of seconds to run all queries: 0.433 seconds

Minimum number of seconds to run all queries: 0.411 seconds

Maximum number of seconds to run all queries: 0.486 seconds

Number of clients running queries: 100

Average number of queries per client: 10

Benchmark

Running for engine innodb

Average number of seconds to run all queries: 0.361 seconds

Minimum number of seconds to run all queries: 0.331 seconds

Maximum number of seconds to run all queries: 0.407 seconds

Number of clients running queries: 50

Average number of queries per client: 20

Benchmark

Running for engine innodb

Average number of seconds to run all queries: 0.446 seconds

Minimum number of seconds to run all queries: 0.372 seconds

Maximum number of seconds to run all queries: 0.550 seconds

Number of clients running queries: 100

Average number of queries per client: 10

User time 0.12, System time 4.36

Maximum resident set size 4180, Integral resident set size 0

Non-physical pagefaults 8852, Physical pagefaults 1, Swaps 0

Blocks in 192 out 0, Messages in 0 out 0, Signals 0

Voluntary context switches 35791, Involuntary context switches 2393

总结:mysqlslap内置工具使用比较方便,可以模拟并发以及不同mysql引擎来进行sql的测试。

 类似资料: