参数名 |
说明 |
---|---|
login-path=# |
新版本 MySQL 提供的登录方式 |
-a, --auto-generate-sql |
自动生成 SQL 语句 |
--auto-generate-sql-add-autoincrement |
在自动生成的表中添加自增列 |
--auto-generate-sql-execute-number=# |
测试中,执行 SQL 的总次数 |
--auto-generate-sql-guid-primary |
生成基于 GUID 的主键 |
--auto-generate-sql-load-type=name |
测试的负载模型,包括 mixed, update, write, key,read,默认是 mix |
--auto-generate-sql-secondary-indexes=# |
自动生成的表中,二级索引的数量 |
--auto-generate-sql-unique-query-number=# |
测试中,使用唯一索引的查询语句数量 |
--auto-generate-sql-unique-write-number=# |
测试中,使用唯一索引的 DML 语句数量 |
--auto-generate-sql-write-number=# |
测试中,每个线程执行的 insert 语句数量,默认为 100 |
--commit=# |
测试中,每多少个语句执行一次 commit |
-c, --concurrency=name |
测试中,并发的线程数/客户端数 |
--create=name |
自定义建表语句,或者是 SQL 文件的地址 |
--create-schema=name |
测试中,使用的数据库名 |
--detach=# |
测试中,每执行一定数量的语句后进行重连 |
-e, --engine=name |
指定建表时的存储引擎 |
-h, --host=name |
指定测试实例的 host 地址 |
-u, --user=name |
指定测试实例的用户名 |
-p, --password=name |
指定测试实例的密码 |
-P, --port=# |
指定测试实例的端口 |
-i, --iterations=# |
指定测试重复的次数 |
--no-drop |
指定测试完成后不删除测试用的库表 |
-x, --number-char-cols=name |
指定测试表中 varchar 列的数量 |
-y, --number-int-cols=name |
指定测试表中 int 列的数量 |
--number-of-queries=# |
指定每个线程执行的 SQL 语句数量上限(不精确) |
--only-print |
类似于 dry run,输出会进行的操作,但是不会真的执行 |
-F, --delimiter=name |
使用文件中提供的 SQL 语句时,显式指定语句之间的分隔符 |
--post-query=name |
指定测试完成后,执行的查询语句,或者是 SQL 语句的文件 |
--pre-query=name |
指定测试开始前,执行的查询语句,或者是 SQL 语句的文件 |
-q, --query=name |
指定测试时,执行的查询语句,或者是 SQL 语句的文件 |
这里对 mysqlslap 进行一次简单的试用,目标实例使用腾讯云数据库 MySQL,最简单的测试示例如下:
root@VM-64-10-debian:~# mysqlslap --concurrency=100 --iterations 10 -a --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=1000 -h172.1.100.10 -uroot -p Enter password: Benchmark Running for engine innodb Average number of seconds to run all queries: 0.046 seconds Minimum number of seconds to run all queries: 0.042 seconds Maximum number of seconds to run all queries: 0.049 seconds Number of clients running queries: 100 Average number of queries per client: 10 root@VM-64-10-debian:~#
该示例中使用的就是最简单的测试模型,由 mysqlslap 自己生成所有的测试语句与建表语句。
如果要对不同并发下的性能做对比,则可以用这种方式进行测试:
root@VM-64-10-debian:~# mysqlslap --concurrency=100,200 --iterations 10 -a --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=1000 -h172.16.0.40 -uroot -p Enter password: Benchmark Running for engine innodb Average number of seconds to run all queries: 0.046 seconds Minimum number of seconds to run all queries: 0.045 seconds Maximum number of seconds to run all queries: 0.048 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.037 seconds Minimum number of seconds to run all queries: 0.034 seconds Maximum number of seconds to run all queries: 0.052 seconds Number of clients running queries: 200 Average number of queries per client: 5 root@VM-64-10-debian:~#
输出的结果为时间,因此时间越小说明整体性能越好。
如果要自定义测试语句,则可以把 SQL 语句写在文件里面,例如:
root@VM-64-10-debian:~# cat create.sql CREATE TABLE a (b int);INSERT INTO a VALUES (23); root@VM-64-10-debian:~# cat query.sql SELECT * FROM a; SELECT b FROM a; root@VM-64-10-debian:~# root@VM-64-10-debian:~# mysqlslap --concurrency=100,200 --query=query.sql --create=create.sql --delimiter=";" --engine=innodb --number-of-queries=1000 -h172.16.0.40 -uroot -p Enter password: Benchmark Running for engine innodb Average number of seconds to run all queries: 0.045 seconds Minimum number of seconds to run all queries: 0.045 seconds Maximum number of seconds to run all queries: 0.045 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.023 seconds Minimum number of seconds to run all queries: 0.023 seconds Maximum number of seconds to run all queries: 0.023 seconds Number of clients running queries: 200 Average number of queries per client: 5 root@VM-64-10-debian:~#
市面上可用的 MySQL 压测工具非常多,各个工具都有优劣,多了解一些工具,然后根据实际需求选择最合适的工具就能以最效率的方式完成需要的压力测试。
以上就是Mysql官方性能测试工具mysqlslap的使用简介的详细内容,更多关于mysqlslap的使用的资料请关注脚本之家其它相关文章!