登录
转载

使用mysql自带mysqlslap进行数据库压力测试

发布于 2021-04-07 阅读 336
  • 数据库
  • SQL
转载

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

1. 简单自动测试

mysqlslap –user=root –password=用户密码 –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=用户密码 –concurrency=500 –number-of-queries=1000 –auto-generate-sql

–concurrency=500                    指定同时有500个客户端接入

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

3. 自动生成复杂表

因自动测试时候创建的表结构非常简单,所以我们根据项目中实际情况指定列的数量和类型:

mysqlslap --user=root --password=用户密码 --concurrency=500 --number-int-cols=10 --number-char-cols=60 --auto-generate-sql

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

–number-char-cols=60       指定生成60个varchar类型的列

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

mysqlslap –user=root –password=用户密码 –concurrency=500 –create-schema=ceshi –query=”SELECT * FROM ss_func_camera;”

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

–query                             是自定义的测试语句

5. 复杂sql语句测试

可以定义一个sql脚本文件例如:

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=用户密码 –concurrency=20 –number-of-queries=1000 –create-schema=ceshi –query=”select_query.sql” –delimiter=”;”

–query                         指定了sql文件

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

MySQLslap的参数整理 --auto-generate-sql 由系统自动生成SQL脚本进行测试 --auto-generate-sql-add-autoincrement 在生成的表中增加自增ID --auto-generate-sql-load-type 指定测试中使用的查询类型 --auto-generate-sql-write-number 指定初始化数据时生成的数据量 --concurrency 指定并发线程的数量 --engine 指定要测试表的存储引擎,可以用逗号分割多个存储引擎 --no-drop 指定不清理测试数据 --iterations 指定测试运行的次数 --number-of-queries 指定每一个线程执行的查询数量 --debug-info 指定输出额外的内存及CPU统计信息 --number-int-cols 指定测试表中包含的INT类型列的数量 --number-char-cols 指定测试表中包含的varchar类型的数量 --create-schema 指定了用于执行测试的数据库的名字 --query 用于指定自定义SQL的脚本 --only-print并不运行测试脚本,而是把生成的脚本打印出来

评论区

admin
14粉丝

打江山易,守江山难,负重前行,持续创新。

0

0

0

举报