Mysql官方性能测试工具mysqlslap的使用简介

 更新时间:2021年05月21日 10:37:58   作者:王文安@DBA  
mysqlslap随着MySQL安装的时候就自动安装好了,而且 mysqlslap 把很多的自定义测试的功能封装到了外部,使用者只需要在外部提供 SQL 语句的脚本就可以自定义测试语句,本文将简单介绍该工具的使用

简介

MySQL 作为最流行的开源数据库,在各个领域都有相当广泛的应用,作为一个 MySQL DBA,经常会对数据库进行一些性能测试来主动(或者是被动的)对业务压力做一个评估,来判断数据库当前的负载以及最高的性能容量。

常见的性能测试工具有 sysbench 和 tpcc,这两者都是非常优秀的压测工具,但是都需要特殊的编译或者安装,并且需要一定的开发能力才能修改具体测试的语句。

mysqlslap 则是随着 MySQL 安装的时候就自动安装好了,而且 mysqlslap 把很多的自定义测试的功能封装到了外部,使用者只需要在外部提供 SQL 语句的脚本就可以自定义测试语句,使用起来会简便一些。

使用介绍

mysqlslap 提供了非常多的参数来配置测试的项目的类型,这里仅摘选部分常用参数进行说明,详细信息参考 mysqlslap 自身的帮助信息。

参数名

说明

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的使用的资料请关注脚本之家其它相关文章!

相关文章

  • mysql database manual(mysql数据库手册)

    mysql database manual(mysql数据库手册)

    mysql database manual(mysql数据库手册),使用mysql的朋友可以参考下。
    2011-09-09
  • MySQL多表查询详解下

    MySQL多表查询详解下

    这篇文章主要介绍了MySQL多表查询详解下,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • MySQL查看与修改字符集的方法实例教程

    MySQL查看与修改字符集的方法实例教程

    这篇文章主要给大家介绍了关于MySQL查看与修改字符集的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • MySQL如何生成唯一的server-id

    MySQL如何生成唯一的server-id

    这篇文章主要给大家介绍了关于MySQL如何生成唯一的server-id的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • SQL 日期处理视图创建(常见数据类型查询防范 SQL注入)

    SQL 日期处理视图创建(常见数据类型查询防范 SQL注入)

    这篇文章主要为大家介绍了SQL日期处理和视图创建:常见数据类型、示例查询和防范 SQL 注入方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • MySQL 回表,覆盖索引,索引下推

    MySQL 回表,覆盖索引,索引下推

    这篇文章主要介绍了MySQL 回表,覆盖索引,索引下推,就是我们需要查询的数据都在二级索引树中,直接返回这种情况就叫做覆盖索引
    2022-07-07
  • 对比MySQL中int、char以及varchar的性能

    对比MySQL中int、char以及varchar的性能

    在本篇文章中我们给大家分享了关于MySQL中int、char以及varchar的性能对比的相关内容,有兴趣的朋友们学习下。
    2018-10-10
  • MySQL 权限控制详解

    MySQL 权限控制详解

    这篇文章主要介绍了MySQL 权限控制详解的相关资料,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-03-03
  • Win10下免安装版MySQL5.7的安装和配置教程详解

    Win10下免安装版MySQL5.7的安装和配置教程详解

    这篇文章主要介绍了Win10下免安装版MySQL5.7的安装和配置教程详解,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • 如何使用mysql语句进行多表联查(以三个表为例)

    如何使用mysql语句进行多表联查(以三个表为例)

    这篇文章主要介绍了如何使用mysql语句进行多表联查(以三个表为例),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论