![547464953211a0969ce57ec65cdf1255.png](https://i-blog.csdnimg.cn/blog_migrate/e14d7456760c7b4cf972f4749b3f1cef.jpeg)
客户经常会问我们RDS for MySQL的性能指标,其中最关注的指标是TPS和QPS两个指标:
TPS:Transaction Per Second,数据库每秒执行的事务数。
QPS:Query Per Second,数据库每秒执行的SQL数,包含insert、select、update、delete等。
我们可以在阿里云、华为云官网上会列出MySQL各规格的性能指标,比如下面是华为云官网列出的Mysql5.7的各规格性能参数:
![f3f54f00044fddd3b9ba37edbc75ab65.png](https://i-blog.csdnimg.cn/blog_migrate/c40b9438d02cef57288f3d164ffef609.jpeg)
性能测试工具有很多,阿里云、华为云采用了Sysbench工具进行测试,如果你租用了云服务商的MySQL数据库服务,为了进行对比,建议也采用该工具测试MySQL服务。
Sysbench是一款基于LuaJIT的,模块化多线程基准测试工具,常用于数据库基准测试。通过内置的数据库测试模型,采用多线程并发操作来评估数据库的性能。
了解Sysbench更多详情,请访问https://github.com/akopytov/sysbench。
本次测试使用的Sysbench版本为1.0.12,云服务商选用华为云。
一、测试环境准备
1、开通云主机
节点:上海二
规格:通用计算增强型 | c3.2xlarge.2 | 8vCPUs | 16GB
带宽: 5 Mbit/s 弹性公网IP
操作系统:CentOS7.4 64位
注:为保证后面测试顺利, 建议测试环境选定CentOS7.4 64位版本。
2、开通MySQL数据库服务
节点:上海二
类型:单机
引擎:MySQL 5.7
规格:8 核 | 32 GB
存储:超高IO 500GB
注:
#主机与MySQL建议选用同一个VPC、子网和安全组。
#存储选用超高IO,容量选用不小于500G,后续需要装载的数据量比加大。
3、安装Sysbench
SSH登录开通的云主机,具体的安装命令如下:
# wget -c https://github.com/akopytov/sysbench/archive/1.0.12.zip# yum install autoconf libtool mysql mysql-devel vim unzip# unzip 1.0.12.zip# cd sysbench-1.0.12# ./autogen.sh# ./configure# make# make install
按顺序执行以上命令即可完成安装。
二、准备测试数据
1、创建测试数据库loadtest
# mysql -u root -P 3306 -h -p -e "create database loadtest"
2、装载测试数据
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-db=loadtest --mysql-user=root --mysql-password= --mysql-port=3306 --mysql-host= --oltp-tables-count=64 --oltp-table-size=10000000 --num-threads=20 prepare
主要参数说明:
oltp.lua:执行装载测试数据的lua脚本;
--oltp-tables-count=64:创建64个测试表;
--oltp-table-size=10000000:每个表1000万条测试数据
prepare:执行装载测试数据的命令
执行后如下图所示:
![710716b7ac724904c267abd582cf074b.png](https://i-blog.csdnimg.cn/blog_migrate/8282693b838cf9189ff3a111bafe4fc3.jpeg)
注意:因为装载的数据量比较大,需要较长时间才能完成测试数据的装载,我们在用SSH时,很容易因各种原因断开SSH连接,导致数据导入中断,建议使用screen工具实现命令在后台自动运行,详见我前一篇发布的文章:关闭ssh连接,让程序继续运飞?
三、执行性能测试
#sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-db=loadtest --mysql-user=root --mysql-password= --mysql-port=3306 --mysql-host= --oltp-tables-count=64 --oltp-table-size=10000000 --max-time=3600 --max-requests=0 --num-threads=200 --report-interval=3 --forced-shutdown=1 run
关键参数说明:
--oltp.lua:执行性能测试lua脚本;
--max-time=3600:最大执行时间,单位秒
--max-requests=0 :请求的最大数目,0表示不限制
--num-threads=200:创建测试线程的数目
--report-interval=3 :隔多久屏幕打印一次统计信息
--forced-shutdown=1:在强制关闭前等待时间,单位秒
-- run:执行性能测试
四、测试结果说明
测试结果截图如下:
![320742e0403dc2b399e4bbf527936d52.png](https://i-blog.csdnimg.cn/blog_migrate/cf13ad20b9cee611c69756bd9fa6ab19.jpeg)
红色框里是我们重点关注的TPS和QPS性能指标:
transactions:事务总数及tps,本例中是1953.89
queries:查询总数及qps,本例中是39078.32
Latency-95th percentile:前95%的请求的最大响应时间,本例中是325.98毫秒
结论:与华为云官网的数据要略低一点(<5%),基本一致。