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命令
命令可以通过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创建测试库
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 的表。
(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生成一次报告
(3)结果汇总分析
可根据常见指标或者自己业务关注的点分析,建议多测试几次取其平均值作为参考,单次测试一般不能作为参考。
然后生成相关的模型图或者报表就可以清楚的对比出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