Mysql官方性能测试工具mysqlslap的使用简介(Mysql官方性能测试工具mysqlslap的使用简介)
Mysql官方性能测试工具mysqlslap的使用简介
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主键为什么用varchar(Mysql中varchar类型一些需要注意的地方)
- mysql 查询json(MySQL处理JSON常见函数的使用)
- MySQL中TIMESTAMP和DATETIME
- mysql 操作系统时区(mysql时区查看与设置方法)
- mysql统计函数详解(浅析MySQL的基数统计)
- mysql的limit的分页使用(获取 MySQL innodb B+tree 的高度的方法)
- mysql数据库间的连接(MySQL中表的几种连接方式)
- 怎样查看mysql的安装路径(MySQL中查看数据库安装路径的方法)
- mysql数据库主键选择的详解(图文详解MySQL中的主键与事务)
- mysql对null值如何理解(MySQL为Null会导致5个问题个个致命)
- mysql查看视图注释(详解MySQL的sql_mode查询与设置)
- mysql数据字段默认值怎么设置(MySQL 字段默认值该如何设置)
- centos安装mysql8.0教程(Centos7 安装 Mysql8教程)
- mysql连接navicat报错1045(Navicat 连接MySQL8.0.11出现2059错误)
- mysqlnull所占空间(详解mysql三值逻辑与NULL)
- mysql客户端怎么运行程序(MySQL 如何连接对应的客户端进程)
- 冬天来了手脚冰凉 真不是因为上辈子你是折翼的天使(冬天来了手脚冰凉)
- 0 1 岁婴儿最强作息指南,照着做养出天使宝宝(01岁婴儿最强作息指南)
- 沪上这16所高校 萌新 礼包开箱 哪一款让你心动(沪上这16所高校萌新)
- 她救了被绑架的他,而这一切竟是一场阴谋...(她救了被绑架的他)
- 冬季养殖这6种阴生植物,方便又好养,你家有么(冬季养殖这6种阴生植物)
- 阴生植物为什么不怕照不到阳光(阴生植物为什么不怕照不到阳光)
热门推荐
- php执行语句(PHP goto语句用法实例)
- 手机无法与服务器建立安全连接(ftp无法与服务器建立连接)
- idea项目中tomcat的配置(tomcat部署项目以及与IDEA集成的实现)
- 织梦dedecms建站详细流程(修改织梦dedecms后台默认admin账号的方法)
- sql语句无效数字(SQL中写入包含有英文单引号“ '' ”失败问题深入详解)
- mysql将字符串转换为日期的函数(Mysql中时间戳转为Date的方法示例)
- ASP.NET SignalR是什么
- springcloud alibaba nacos linux配置的详细教程(springcloud alibaba nacos linux配置的详细教程)
- docker查看挂载目录(docker-修改容器挂载目录的3种方法小结)
- python将一个字符串逆序输出(Python字符串逆序输出的实例讲解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9