• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Mysql官方性能测试工具mysqlslap的使用简介

    简介

    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压力测试工具Mysqlslap的使用
    • 详解Mysql5.7自带的压力测试命令mysqlslap及使用语法
    • MySQL压测工具mysqlslap的介绍与使用
    • MySQL压力测试方法 如何使用mysqlslap测试MySQL的压力?
    • Mysqlslap MySQL压力测试工具 简单教程
    上一篇:MySQL官方导出工具mysqlpump的使用
    下一篇:MySQL 重命名表的操作方法及注意事项
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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