百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> MySQL基准测试和sysbench工具的详解
分享文章到:

MySQL基准测试和sysbench工具的详解

发布时间:09/01 来源:未知 浏览: 关键词:

相关学习引荐:mysql教程

什么是基准测试

数据库的基准测试是对数据库的机能目标停止定量的、可复现的、可对照的测试。基准测试与压力测试 基准测试可以懂得为针对系统的一种压力测试。但基准测试不关怀业务逻辑,愈加简便、直接、易于测试,数据可以由工具生成,不要求真实;而压力测试一样思考业务逻辑(如购物车业务),要求真实的数据。

基准测试的作用

关于多数Web利用,整个系统的瓶颈在于数据库;缘由很简便:Web利用中的其他因素,例如网络带宽、负载平衡节点、利用效劳器(包罗CPU、内存、硬盘灯、连接数等)、缓存,都很容易通过水平的扩展(俗称加机器)来实现机能的提高。而关于MySQL,由于数据一致性的要求,没法通过增添机器来分离向数据库写数据带来的压力;虽然可以通过前置缓存(Redis等)、读写别离、分库分表来减轻压力,但是与系统其它组件的水平扩展比拟,受到了太多的限制。

而对数据库的基准测试的作用,就是剖析在当前的配置下(包罗硬件配置、OS、数据库设定等),数据库的机能展现,从而寻出MySQL的机能阈值,并按照实际系统的要求调整配置。

基准测试的目标

常见的数据库目标包罗:

TPS/QPS:衡量吞吐量。响应时间:包罗均匀响应时间、最小响应时间、最大响应时间、时间百分比等,其中时间百分比参照 意义较大,如前95%的恳求的最大响应时间。。并发量:同时处置的查询恳求的数目。

基准测试的分类

对MySQL的基准测试,有如下两种思绪:

  • 针对整个系统的基准测试:通过http恳求停止测试,如通过阅读器、APP或postman等测试工具。该方案的长处是能够更好的针对整个系统,测试结果愈加准确;缺陷是设计复杂实现艰难。
  • 只针对MySQL的基准测试:长处和缺陷与针对整个系统的测试刚好相反。

在针对MySQL停止基准测试时,一样使用专门的工具停止,例如mysqlslap、sysbench等。其中,sysbench比mysqlslap更通用、更强大,且更适合Innodb(由于模拟了很多Innodb的IO特性),下面介绍使用sysbench停止基准测试的办法。

sysbench简介

sysbench是跨平台的基准测试工具,支撑多线程,支撑多种数据库;主要包罗以下几种测试:

1.cpu机能2.磁盘io机能3.调度程序机能4.内存分配及传输速度5.POSIX线程机能6.数据库机能(OLTP基准测试)7.本文主要介绍对数据库机能的测试。

sysbench安置

本文使用的环境时CentOS 6.5;在其他Linux系统上的安置办法大同小异。MySQL版本是5.6。

1.下载解压
wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
unzip sysbench-1.0.zip
cd sysbench-1.0

2.安置依靠
yum install automake libtool –y

3.安置 安置此前,确保位于此前解压的sysbench名目中。
./autogen.sh
./configure
export LD_LIBRARY_PATH=/usr/local/mysql/include 
#这里换成机器中mysql途径下的include
make
make install

4.安置成功
[[email protected] sysbench-1.0]# sysbench --version
sysbench 1.0.9

sysbench语法

施行sysbench –help,可以看到sysbench的具体使用办法。sysbench的根本语法如下:

sysbench [options]... [testname] [command]

下面说明实际使用中,常用的参数和命令。

1.command command是sysbench要施行的命令,包罗prepare、run和cleanup,望文生义,prepare是为测试提早预备数据,run是施行正式的测试,cleanup是在测试完成后对数据库停止清算。

2.testname testname指定了要停止的测试,在老版本的sysbench中,可以通过--test参数指定测试的足本;而在新版本中,--test参数已经声明为废弃,可以不使用--test,而是直接指定足本。

例如,如下两种办法结果是一样的:

sysbench --test=./tests/include/oltp_legacy/oltp.lua
sysbench ./tests/include/oltp_legacy/oltp.lua

测试时使用的足本为lua足本,可以使用sysbench自带足本,也可以本人开发。关于大多数利用,使用sysbench自带的足本就足够了。不一样版本的sysbench中,lua足本的位置大概不一样,可以本人在sysbench途径下使用find命令搜索oltp.lua。P.S.:大多数数据效劳都是oltp类型的,假如你不理解什么是oltp,那么大约率你的数据效劳就是oltp类型的。

3.options sysbench的参数有许多,其中比力常用的包罗: MySQL连接信息参数:

1.--mysql-host:MySQL效劳器主机名,默许localhost;假如在本机上使用localhost报错,提醒没法连接MySQL效劳器,改成本机的IP地址应当就可以了。2.--mysql-port:MySQL效劳器端口,默许33063.--mysql-user:会员名4.--mysql-password:密码

MySQL施行参数:

1.--oltp-test-mode:施行模式,包罗simple、nontrx和complex,默许是complex。simple模式下只测试简便的查询;nontrx不仅测试查询,还测试插入更新等,但是不使用事务;complex模式下测试最全面,会测试增删改查,并且会使用事务。可以按照本人的需要选中测试模式。2.--oltp-tables-count:测试的表数目,按照实际状况选中3.--oltp-table-size:测试的表的大小,按照实际状况选中4.--threads:客户端的并发连接数5.--time:测试施行的时间,单位是秒,该值不要太短,可以选中1206.--report-interval:生成报告的时间间隔,单位是秒,如10

sysbench使用举例

在施行sysbench时,应当留意:

1.尽量不要在MySQL效劳器运转的机器上停止测试,一方面大概没法表现网络(哪怕是局域网)的影响,另一方面,sysbench的运转(特别是设定的并发数较高时)会影响MySQL效劳器的展现。2.可以逐渐增添客户端的并发连接数(--thread参数),视察在连接数不一样状况下,MySQL效劳器的展现;如离别设定为10,20,50,100等。3.一样施行模式选中complex即可,假如需要特殊测试效劳器只读机能,或不使用事务时的机能,可以选中simple模式或nontrx模式。4.假如持续停止屡次测试,留意确保此前测试的数据已经被清算洁净。

下面是sysbench使用的一个例子:

1.预备数据

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 prepare

其中,施行模式为complex,使用了10个表,每个表有10万条数据,客户端的并发线程数为10,施行时间为120秒,每10秒生成一次报告。

2.施行测试 将测试结果输出到文件中,便于后续剖析。

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 run >> /home/test/mysysbench.log

3.清算数据 施行完测试后,清算数据,不然后面的测试会受到影响。

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 cleanup

测试结果

测试完毕后,查看输出文件,如下所示:

其中,关于我们比力重要的信息包罗:queries:查询总数及qps transactions:事务总数及tps Latency-95th percentile:前95%的恳求的最大响应时间,本例中是344毫秒,这个延迟非常大,是由于我用的MySQL效劳器机能很差;在正式环境中这个数值是绝对不克不及接受的。

倡议

下面是使用sysbench的一些倡议。

1.在开端测试此前,应当第一明白:应采纳针对整个系统的基准测试,还是针对MySQL的基准测试,还是二者都需要。2.假如需要针对MySQL的基准测试,那么还需要明白精度方面的要求:可否需要使用生产环境的真实数据,还是使用工具生成也可以;前者实施起来愈加繁琐。假如要使用真实数据,尽量使用全部数据,而不是部分数据。3.基准测试要停止屡次才成心义。4.测试时需要留意主从同步的状态。5.测试必需模拟多线程的状况,单线程状况不单没法模拟真实的效力,也没法模拟堵塞乃至死锁状况。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板