1.1 常见 MySQL 压力测试工具
对 MySQL 服务进行压力测试,可以让我们提前知晓当前服务节点的性能,从而对整个架构的负载能力有合理的预期,进而做出相应的调整和部署。
常见的 MySQL 压力测试工具包括 mysqlslap,Sysbench,tpcc-mysql,MySQL Benchmark Suite,MySQL super-smack,MyBench 等,其中 mysqlslap 是 mysql 官方提供的压力测试工具,安装 mysql 服务就可以直接使用。
1.2 使用 mysqlslap 进行压力测试
mysqlslap 来自于 mysql 或 mariadb 包,测试的过程默认生成一个 mysqlslap 的 schema,生成测试表 t1,查询和插入测试数据,mysqlslap 库自动生成,如果已经存在则先删除。用 --only-print 来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹。
命令格式
mysqlslap [OPTIONS]
#常用选项
-?|--help #显示帮助
-V|--version #显示版本信息
-h|--host=name #服务器地址
-p|--password[=name] #连接密码
-P|--port=N #端口
-a|--auto-generate-sql #自行生成测试表和数据,测试结束后会被删除
-x|--number-char-cols=N #自动生成的测试表中包含多少个字符类型的列,默认1
-y|--number-int-cols=N #自动生成的测试表中包含多少个数字类型的列,默认1
-q|--query=sql #执行自定义SQL语句
-S|--socket=name #指定连接使用的socket文件
-c|--concurrency=N #表示并发量,即模拟多少个客户端同时执行select,可指定多个值
#以逗号或者--delimiter参数指定值做为分隔符,如--concurrency=100,200,500
-i|--iterations=N #测试执行的迭代次数,代表要在不同并发环境下,各自运行测试多少次
-e|--engine=name #要测试的引擎,可以有多个,用分隔符隔开。例如--engines=myisam,innodb
-C|--compress #如果服务器和客户端都支持压缩,则压缩信息
--print-defaults #在终端输出默认选项和参数
--only-print #只打印测试语句而不实际执行
--commint=N #多少次DML后提交一次事务
--detach=N #执行N条语句后断开重连
--no-drop #测试完成后不删除测试库
--create-schema=name #自定义测度库名称
--number-of-queries=N #总的测试查询次数(并发客户数乘以每客户查询次数)
--auto-generate-sql-add-autoincrement #在测试数据表中增加 auto_increment 列,从 mysql 5.1.18 版本开始支持
--auto-generate-sql-load-type=name #测试类型 mixed|update|write|key,默认为mixed
#默认连接当前服务器,自行生成测试表,同时100个客户端并发执行
[root@rocky86 ~]# mysqlslap -a -c100
Benchmark
Average number of seconds to run all queries: 0.512 seconds #平均查询时长
Minimum number of seconds to run all queries: 0.512 seconds #查询中最小时长
Maximum number of seconds to run all queries: 0.512 seconds #查询中最大时长
Number of clients running queries: 100 #查询客户端数量
Average number of queries per client: 0 #平均每个客户端查询次数,没有指定总的查询次数,值为0
#迭代10次
root@rocky86 ~]# mysqlslap -a -i 10 -c 100 -uroot -p123456
Benchmark
Average number of seconds to run all queries: 0.431 seconds
Minimum number of seconds to run all queries: 0.363 seconds
Maximum number of seconds to run all queries: 0.509 seconds
Number of clients running queries: 100
Average number of queries per client: 0
#50个客户端同时请求,myisam,innodb各请求200次
[root@rocky86 ~]# mysqlslap -a -c 50 --number-of-queries 200 --engine=myisam,innodb
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.933 seconds
Minimum number of seconds to run all queries: 0.933 seconds
Maximum number of seconds to run all queries: 0.933 seconds
Number of clients running queries: 50
Average number of queries per client: 4
Benchmark
Running for engine innodb
Average number of seconds to run all queries: 0.365 seconds
Minimum number of seconds to run all queries: 0.365 seconds
Maximum number of seconds to run all queries: 0.365 seconds
Number of clients running queries: 50
Average number of queries per client: 4
mysql> show databases like '%slap%';
Empty set (0.00 sec)
#保留数据库
[root@rocky86 ~]# mysqlslap -a --no-drop
mysql> show databases like '%slap%';
+-------------------+
| Database (%slap%) |
+-------------------+
| mysqlslap |
+-------------------+
1 row in set (0.01 sec)
— END —

优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!
优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站、APP开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。