sysbench mysql-ssd与hdd性能测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sysbench mysql-ssd与hdd性能测试相关的知识,希望对你有一定的参考价值。

测试环境

操作系统:CentOS7.2.1511 64位

mysql:MySQL5.7.12 64位

硬盘:SSD、HDD

测试工具:sysbench0.5

安装sysbench0.5

更新和安装依赖包

git clone https://github.com/akopytov/sysbench 
cd  sysbench
./autogen.sh

# with-mysql-includes 指定MySQL安装目录

# with-mysql-libs 指定MySQL lib所在目录

./configure --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/
make && make install

出现如下报错

/bin/sh ../libtool --tag=CC   --mode=link gcc -pthread -g -O2      -o sysbench sysbench.o sb_timer.o sb_options.o sb_logger.o db_driver.o tests/fileio/libsbfileio.a tests/threads/libsbthreads.a tests/memory/libsbmemory.a tests/cpu/libsbcpu.a tests/oltp/libsboltp.a tests/mutex/libsbmutex.a drivers/mysql/libsbmysql.a -L/usr/mysql/lib -lmysqlclient_r not found

cd /usr/local/mysql/lib/mysql/ 
ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so
cp /usr/bin/libtool libtool

第二个问题是安装完sysbench之后执行时报错: 

这说明sysbench无法找到mysql的库文件,这很可能是环境变量LD_LIBRARY_PATH没有设置,设置后即可解决该问题: 

export LD_LIBRARY_PATH=/usr/local/mysql/lib

一.数据准备

[[email protected] sysbench_0.5]# sysbench --mysql-db=iotest --num-threads=24 --mysql-engine-trx=yes --mysql-table-engine=innodb --rand-type=special --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123123 --mysql-socket=/tmp/mysql.sock --test=sysbench/tests/db/oltp.lua --oltp_tables_count=50 --oltp-table-size=10000 --rand-init=on prepare

二.INNODB 测试命令

[[email protected] sysbench]#sysbench --mysql-db=iotest --mysql-engine-trx=yes --mysql-table-engine=innodb --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123123 --mysql-socket=/tmp/mysql.sock --test=sysbench/tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=10000 --num-threads=10 --oltp-read-only=off --report-interval=10 --rand-type=uniform --max-time=600 --max-requests=0 --percentile=95 run

参数说明

--mysql-db:指定在哪个数据库创建测试表,默认为iotest库,需要提前创建好

--num-threads:使用多线程创建多表,节省准备时间

--mysql-engine-trx=yes 支持事务

--mysql-table-engine:指定存储引擎,如myisam,innodb,heap,ndbcluster,bdb,maria,falcon,pbxt 默认InnoDB

--test=tests/db/oltp.lua 表示调用 tests/db/oltp.lua 脚本进行 oltp 模式测试

--oltp_tables_count=10 表示会生成 10 个测试表

--oltp-table-size=10000 表示每个测试表填充数据量为 10000

--oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试

--report-interval=10 表示每10秒输出一次测试进度报告

--rand-type=uniform:数据分布模式,special表示存在热点数据,uniform表示非热点数据模式: uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)

--max-time=600 表示最大执行时长为 600秒

--max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长

--percentile=95 表示设定采样比例,默认是 95%,即丢弃5%的长请求,在剩余的95%里取最大值

三.测试结果

SSD.TPS=495.30K/S HDD.TPS=83.06K/S 

SSD.reads=6934.34K/S HDD.reads=1163.4K/S 

SSD.writes=1981.18K/S HDD.writes=332.347K/S

SSD.Response_time=37.08ms HDD.Response_time=420.25ms

四.测试结论

1.TPS事物处理:MySQL在SSD上运行是在HDD上运行的5.9631倍

2.reads:MySQL在SSD上运行是在HDD上运行的5.9604倍

3.writes:MySQL在SSD上运行是在HDD上运行的5.9611倍

4.Response_time:MySQL在SSD上运行比在HDD上运行响应时间快11.33倍

5.Errors:MySQL在SSD上运行是在HDD上运行错误率高2倍              这点和预期有些出入


本文出自 “Running” 博客,谢绝转载!

以上是关于sysbench mysql-ssd与hdd性能测试的主要内容,如果未能解决你的问题,请参考以下文章

sysbench压测工具 压测 mysql

sysbench压测工具 压测 mysql

MySQL压测使用sysbench对MySQL进行压力测试

MySQL性能压测工具SysBench详解(非常详细)

Mysql 性能测试工具 sysbench的安装和使用

sysbench的框架实现介绍