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配置文件my.cnf的介绍
- php实现redis核心代码(PHP结合Redis+MySQL实现冷热数据交换应用案例详解)
- mysql拼接和过滤(mysql 如何动态修改复制过滤器)
- mysqlbinlog怎么分析(MySQL中使用binlog时格式该如何选择)
- mysql8.0.25.0安装配置(MySQL8.0.23免安装版配置详细教程)
- mysql数据库三种模式(MySQL数据库是如何实现XA规范的)
- mysqlreplace用法(细说mysql replace into用法)
- mysql怎么看脱机数据(MYSQL电话号码,身份证数据脱敏的实现)
- mysql查看死锁记录(mysql查看死锁与去除死锁示例详解)
- mysql内部有4种常见日志(MySQL 慢日志相关知识总结)
- mysql 查询语句group by用法(MySQL group by和order by如何一起使用)
- mysql意外查不到数据(MySQL 丢失数据的原因及解决)
- mysql的浮点数类型(浅谈MySQL中float、double、decimal三个浮点类型的区别与总结)
- linuxmysql安装教程5.7.25学习(linux mysql5.5升级至mysql5.7的步骤与踩到的坑)
- mysqljson字段查询(Mysql 查询JSON结果的相关函数汇总)
- mysql innodb存储原理(mysql innodb的重要组件汇总)
- 肌肉小子陈康, 亚洲巨兽 黄哲勋,哪个才是你的菜(肌肉小子陈康亚洲巨兽)
- 新闻周刊 青岛网红 赵厂长 编段子一箩筐输出快乐,陪父亲十二载勇斗病魔(新闻周刊青岛网红)
- 44岁夏雨演谋女郎爸,大其24岁却看不出,互动不怕袁泉吃醋(44岁夏雨演谋女郎爸)
- 全椒人,你还记得吗 那年,那人,那网,那些我们的青春记忆(全椒人你还记得吗)
- 全椒人在苏州10周年联谊会在苏州举办(全椒人在苏州10周年联谊会在苏州举办)
- 这个全椒人被通报表彰,看看你认识吗(这个全椒人被通报表彰)
热门推荐
- thinkphp权限认证怎么用(ThinkPHP框架结合Ajax实现用户名校验功能示例)
- python爬虫10分钟教程(浅谈Python爬虫基本套路)
- dede编码在哪里改(dede栏目页面包屑导航最后的分隔符大于号去掉方法)
- nginx过滤http请求协议(nginx对http请求处理的各个阶段详析)
- nginx网站集群(Nginx实现高可用集群构建Keepalived+Haproxy+Nginx)
- html5 canvas 性能(基于html5 canvas做批改作业的小插件)
- linux分区管理(在腾讯云的Linux系统服务器上格式化和分区磁盘的教程)
- sqlserver恢复delete数据(SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢)
- mysql字符类型长度限制
- html5如何设置标签(HTML5中在title标题标签里设置小图标的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9