1、基测的作用

分析当前数据库的配置下(包括硬件配置、系统配置、数据库配置等)数据库在各个方面的表现,从而找出Mysql的性能瓶颈,随后根据业务的实际需求进行相应的挑战。

2、基测得方式

(1)针对整个系统,进行类似http request的方式测试,可以全方位的测试当前整个系统的优点和缺陷,但是这种方式考虑的点太多,如网络、负载均衡、前端硬件等,相对比较难测试。

(2)单独针对mysql测试,此种方式只能测试mysql,对整个系统没办法测试。

一般使用的工具有sysbench、mysqlslap、fio等,sysbench相对测试的角度更多更强大。

3、常见的数据库指标

(1)TPS/QPS:衡量吞吐量。

(2)响应时间:包括平均响应时间、最小响应时间、最大响应时间、前95%的请求的最大响应时间。

(3)并发量:同时处理的查询请求的数量。

(4)处理总时间。

4、sysbench工具

sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能(OLTP)测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。

5、安装sysbench

(1)yum安装

yum -y install sysbench

(2)如果YUM找不到源,可自行官网下载安装包源码安装,如下:

wget http://sourceforge.net/projects/sysbench/sysbench-0.4.12.tar.gz

tar sysbench-0.4.12.tar.gz

cd sysbench-1.0

./autogen.sh

./configure

export LD_LIBRARY_PATH=/usr/local/mysql/include

make&make install

6、sysbench命令




soci 运行mysql的测试用例 使用sysbench测试mysql性能时_mysql并发量


命令可以通过sysbench --help查看,具体命令作用可以查看释义。

测试mysql使用到的命令及释义如下:

(1)command

command即执行操作,操作分别是perpare、run、clean,perpare为测试前做数据准备,run即执行测试,clean是在测试结束后对数据库进行清理。

(2)测试方式

-oltp-test-mode 执行(run)模式,分读、写、更新、读写操作等。

  • --oltp-test-mode:执行模式,包括simple、nontrx和complex,默认是complex。simple模式下只测试简单的查询;nontrx不仅测试查询,还测试插入更新等,但是不使用事务;complex模式下测试最全面,会测试增删改查,而且会使用事务。可以根据自己的需要选择测试模式。
  • --oltp-tables-count:测试的表数量,根据实际情况选择
  • --oltp-table-size:测试的表的大小,根据实际情况选择
  • --threads:客户端的并发连接数
  • --time:测试执行的时间,单位是秒,该值不要太短,可以选择120
  • --report-interval:生成报告的时间间隔,单位是秒,如10。

其他命令介绍请查看释义。

7、测试准备

(1)mysql创建测试库


soci 运行mysql的测试用例 使用sysbench测试mysql性能时_mysql并发量_02


8、使用sysbench测试test库

先切换到测试脚本目录:/usr/share/sysbench

(1)准备数据

sysbench oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=test --mysql-user=root --mysql-password='1qaz@WSX' --table_size=20000000 --tables=1 --threads=500 --events=500000 --report-interval=10 --time=0 perpare

等几分钟后会在mysql中的test库中创建一张名为sbtest1 的表。


soci 运行mysql的测试用例 使用sysbench测试mysql性能时_mysql使用_03


(2)执行测试

sysbench oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=test --mysql-user=root --mysql-password='1qaz@WSX' --table_size=20000000 --tables=1 --threads=500 --events=500000 --report-interval=10 --time=0 run

使用complex模式,针对读写测试,使用1个表,每个表2000W条数据,并发500,10s生成一次报告


soci 运行mysql的测试用例 使用sysbench测试mysql性能时_数据库_04


soci 运行mysql的测试用例 使用sysbench测试mysql性能时_mysql_05


(3)结果汇总分析

可根据常见指标或者自己业务关注的点分析,建议多测试几次取其平均值作为参考,单次测试一般不能作为参考。


soci 运行mysql的测试用例 使用sysbench测试mysql性能时_mysql并发量_06


然后生成相关的模型图或者报表就可以清楚的对比出mysql在不同的环境中性能状况。

(4)清理数据

sysbench oltp_read_write.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-db=test --mysql-user=root --mysql-password='1qaz@WSX' --table_size=20000000 --tables=1 --threads=500 --events=500000 --report-interval=10 --time=0 cleanup