本文介绍mysql性能测试一些方法,然后通过测试工具之一sysbench对mysql进行性能测试。
MySQL是一个关系型数据库管理系统。sysbench是一款开源的多线程性能测试工具,可以执行CPU、内存、线程、IO、数据库等方面的性能测试
对MySQL的基准测试,有如下两种思路:
(1)针对整个系统的基准测试:通过http请求进行测试,如通过浏览器、APP或postman等测试工具。该方案的优点是能够更好的针对整个系统,测试结果更加准确;缺点是设计复杂实现困难。
(2)只针对MySQL的基准测试:优点和缺点与针对整个系统的测试恰好相反。
在针对MySQL进行基准测试时,一般使用专门的工具进行,例如mysqlslap、sysbench等。其中,sysbench比mysqlslap更通用、更强大,且更适合Innodb(因为模拟了许多Innodb的IO特性),下面介绍使用sysbench进行基准测试的方法。
利用sysbench对MySQL进行性能测试
1、安装准备
华为云购买一台鲲鹏服务器(sysbench和mysql部署在同一台鲲鹏服务器上,当然也可以部署在不同的服务器上)
本文以云服务器KC1实例搭建,云服务器配置如表1-1所示。
表1-1云服务器配置项目说明
规格kc1.large.2 | 2vCPUs | 4GB
磁盘系统盘:高IO(40GB)
操作系统要求如表1-2所示。
表1-2操作系统要求项目说明下载地址
CentOS7.6在公共镜像中已提供。
Kernel4.14.0-115在公共镜像中已提供。
2、部署MySQL
鲲鹏社区软件栈已经有部署文档,请参考
3、部署sysbench
鲲鹏社区软件栈已经有部署文档,请参考
4、登录mysql
mysql –uroot -p123456
5、创建sysbench测试使用的数据库“dbtest”
create database dbtest;
show databases;
6、准备数据
执行命令:
sysbench /usr/local/share/sysbench/oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=dbtest --db-driver=mysql --tables=1 --table-size=10000 --report-interval=30 --threads=1 --time=30 prepare
显示如下:
7、执行测试
执行命令:
sysbench /usr/local/share/sysbench/oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=dbtest --db-driver=mysql --tables=1 --table-size=10000 --report-interval=30 --threads=1 --time=30 run
说明:
其中,对于我们比较重要的信息包括:
queries:查询总数及qps
transactions:事务总数及tps
Latency-95th percentile:前95%的请求的最大响应时间,本例中是7.7毫秒
显示如下:
8、清理数据
执行完测试后,清理数据,否则后面的测试会受到影响。执行命令如下:
sysbench /usr/local/share/sysbench/oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=dbtest --db-driver=mysql --tables=1 --table-size=10000 --report-interval=30 --threads=1 --time=30 cleanup
显示如下: