正确测试安装mysql_云数据库MySQL测试的正确姿势

这个周末非常地无聊,下载了最新版的sysbench,发现已经被改得面目全非。熟悉的编译选项、运行参数都跑不通了,最坑爹的是有些版本还要自己到处找lua脚本。从产品经理的角度,我要给所有新版本的sysbench打负分!果然小的开源项目都是作者爽完的卫生纸。尝试了好几个版本之后,终于找到一个按部就班就能用的。在这分享给大家,节省点时间就是送钱。

我比较熟悉Linux,以下教程是基于CentOS的:首先,安装一些必要的系统工具

sudo su - root

yum install autoconf automake make libtool* unzip mysql mysql-devel -y其次,下载和编译安装sysbench

wget https://github.com/akopytov/sysbench/archive/0.5.zip

unzip 0.5.zip

cd sysbench-0.5

./autogen.sh

./configure

make -j8

make install再其次,初始化MySQL测试环境mysql -hXXXX -P3306 -uXXXX -pXXXX

>drop database sbtest;

>create database sbtest;

>exit;

sysbench --num-threads=32 --max-time=60 --max-requests=999999999 --oltp-table-size=1000000 --oltp-tables-count=16 --db-driver=mysql --mysql-table-engine=innodb --test=/root/sysbench-0.5/sysbench/tests/db/oltp.lua --mysql-host=XXXX --mysql-port=3306 --mysql-user=XXXX --mysql-password=XXXX prepare 2>&1 > sysbench.log &最后,愉快地压测MySQLsysbench --num-threads=32 --max-time=60 --max-requests=999999999 --oltp-table-size=1000000 --oltp-tables-count=16 --db-driver=mysql --mysql-table-engine=innodb --test=/root/sysbench-0.5/sysbench/tests/db/oltp.lua --mysql-host=XXXX --mysql-port=3306 --mysql-user=XXXX --mysql-password=XXXX run

上面这个sysbench测试将会在MySQL的sbtest库里面创建16个innodb表(sbtest是sysbench test的缩写,作者跟中国DBA没仇),每个表的数据量是100万,总共1600万数据。这个数据量非常小,MySQL的innodb buffer pool有几个GB基本就可以cache住大部分数据,所以比较适合压测CPU。如果想要测试IO性能,可以在初始化阶段加大oltp-table-size和oltp-tables-count,让OLTP测试的目标数据尽可能不被cache。

如果运行顺利的话,完事之后会得到如下结果:

OLTP

test statistics:

queries performed:

read: 1093092

write: 312312

other: 156156

total: 1561560

transactions: 78078 (1300.79 per sec.)

read/write requests: 1405404 (23414.22

per sec.)

other operations: 156156 (2601.58 per

sec.)

ignored errors: 0 (0.00 per sec.)

reconnects: 0 (0.00 per sec.)

General statistics:

total time: 60.0235s

total number of events: 78078

total time taken by event

execution: 1920.2594s

response time:

min: 19.56ms

avg: 24.59ms

max: 308.74ms

approx. 95 percentile: 31.44ms

Threads fairness:

events (avg/stddev): 2439.9375/36.86

execution time (avg/stddev): 60.0081/0.01

如果关注吞吐量,看read/write requests;如果关注响应时间,看response time。在response time一定的情况下,通过增加客户端的线程数可以提升MySQL吞吐量。

注意,线程数不能比MySQL的CPU数量多太多!否则MySQL将会消耗更多CPU在资源争抢上,吞吐量反而会下降。上面测试用了32个客户端线程,应该比较具有普适性。

手痒的同学们可以赶紧买几个云数据库玩玩了,我们下周再见。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值