转载至文章作者:杜亦舒

链接:https://www.sdk.cn/news/4512

来源:SDK.cn

摘要:mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况

mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况

mysql slap 的一个主要工作场景就是对数据库服务器做基准测试

例如我们拿到了一台服务器,准备做为数据库服务器,那么这台服务器的硬件资源能够支持多大的访问压力呢?优化了操作系统的内核参数后,是否提升了性能?调整了Mysql配置参数后,对性能有多少影响?……

通过一系列的调优工作,配合基准测试,就可以把这台服务器调整到最佳状态,也掌握了健康状态下的性能指标

以后在实际运行过程中,当监控的数据接近了基准指标时,说明数据库服务器快要满负荷了,需要分析是数据库结构设计、SQL语句这类用法问题,还是硬件资源的确不够了,然后进行相应的处理

数据库服务器也可能需要硬件升级,升级之后也需要进行基准测试,和之前的测试结果对比,确保升级后的性能是提升的,防止不恰当的升级或者错误的配置引起性能下降

了解了 mysqlslap 的用处,下面看一下如何使用 mysqlslap

mysqlslap 示例

1.简单用法

对数据库做一个简单的自动测试


mysqlslap --user=root --password=111111 --auto-generate-sql

--auto-generate-sql 作用是自动生成测试SQL

结果中各项含义:

Average number of ...

运行所有语句的平均秒数

Minimum number of ...

运行所有语句的最小秒数

Maximum number of ...

运行所有语句的最大秒数

Number of clients ...

客户端数量

Average number of queries per client

每个客户端运行查询的平均数

2.添加并发

mysqlslap --user=root --password=111111 --concurrency=100 --number-of-queries=1000 --auto-generate-sql

--concurrency=100 指定同时有100个客户端连接

--number-of-queries=1000 指定总的测试查询次数(并发客户端数 * 每个客户端的查询次数)

3.自动生成复杂表

自动测试时,创建的表结构非常简单,只有两列,实际的产品环境肯定会更复杂,可以使用参数指定列的数量和类型,例如

mysqlslap --user=root --password=111111 --concurrency=50 --number-int-cols=5 --number-char-cols=20 --auto-generate-sql

--number-int-cols=5  指定生成5个 int 类型的列

--number-char-cols=20 指定生成20个 char 类型的列

4.使用自己的测试库和测试语句

自动测试可以帮助我们了解硬件层面的状况,对于我们产品特定的情况,还是使用自己的库来测试比较好,可以复制一份产品库过来,然后对此库测试,例如

mysqlslap --user=root --password=111111 --concurrency=50 --create-schema=employees --query="SELECT * FROM dept_emp;"

--create-schema 用来指定测试库名称

--query 是自定义的测试语句

实际使用时,一般是测试多个复杂的语句,可以定义一个脚本文件,例如

echo "SELECT * FROM employees;SELECT * FROM titles;SELECT * FROM dept_emp;SELECT * FROM dept_manager;SELECT * FROM departments;" > ~/select_query.sql

把多个查询语句写入了一个 sql 文件,然后使用此文件执行测试

mysqlslap --user=root --password=111111 --concurrency=20 --number-of-queries=1000 --create-schema=employees --query="select_query.sql" --delimiter=";"

--query 中指定了sql文件

--delimiter 说明sql文件中语句间的分隔符是什么

上面用到的 employees 测试库的创建脚本我放到了网盘(employees_db.zip),有兴趣体验 mysqlslap 的话可以下载下来试试

参考资料

5.5.9 mysqlslap — Load Emulation Client

How To Measure MySQL Query Performance with mysqlslap

最新文章

  1. nginx_mysql_redis配置
  2. vim - line
  3. 把cmd信息中的正常和异常输出分别输出到不同txt文件中
  4. 利用yum下载软件包的三种方法
  5. SPM FDR校正
  6. 数组的方法 Array.map();Array.every()和Array.some();数组的indexof();检测是否是数组isArray(obj);
  7. 基于流的自动化构建工具------gulp (简单配置)
  8. kindeditor编辑器
  9. Sqlmap基础(二)
  10. 深入理解BFC和Margin Collapse
  11. python调webservice和COM接口
  12. 使用URLConnection调用axis1.4开发的webservice
  13. Deploy .Net project automatically with MsBuild and MsDeploy (1)
  14. 把连续动态bmp转换为avi
  15. HTML5中 基本用法及属性 韩俊强的博客
  16. antd的Tree控件实现点击展开功能
  17. A.01.02—模块的输入—高端输入
  18. scala mysql jdbc oper
  19. cStringIO 实现指定大小的字符串缓存
  20. WPF LinkButton

热门文章

  1. 漫游Kafka入门篇之简单介绍(1)
  2. thinkPHP隐藏url地址栏中的index.php方法
  3. mysql远程连接授权
  4. connect() failed (111: Connection refused) while connecting to upstream, cli
  5. 复习及总结--.Net线程篇(2)
  6. 0.0.0.0:80端口被系统System占用
  7. 移动端ios中click点击失效
  8. Objective-C内存管理基础
  9. python3-requests库的使用
  10. 【Python数据挖掘】决策树、随机森林、Bootsing、