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并不运行测试脚本,而是把生成的脚本打印出来