sysbench工具和mysql的基准测试

Posted zbbiex

tags:

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

一、基准测试

  1、什么是基准测试

    数据库的基准测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。

    基准测试与压力测试

    基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑,更加简单、直接、易于测试,数据可以由工具生成,不要求真实;而压力测试一般考虑业务逻辑(如购物车业务),要求真实的数据。

  2、基准测试的作用

    mysql的基准测试,有如下两种思路:

   (1)针对整个系统的基准测试:通过http请求进行测试,如通过浏览器、APP或postman等测试工具。该方案的优点是能够更好的针对整个系统,测试结果更加准确;缺点是设计复杂实现困难。

   (2)只针对MySQL的基准测试:优点和缺点与针对整个系统的测试恰好相反。

        在针对MySQL进行基准测试时,一般使用专门的工具进行,例如mysqlslap、sysbench等。其中,sysbench比mysqlslap更通用、更强大,且更适合Innodb(因为模拟了许多Innodb的IO特性),下面介绍使用sysbench进行基准测试的方法。

二,sysbench工具

  1、sysbench简介

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

  cup性能、磁盘IO性能、调度程序性能、内存分配以及传输速度、POSIX线程性能,数据库性能测试(OLTP基准测试)

  2、sysbench的安装

   下载解压:

1 wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
2 unzip sysbench-1.0.zip
3 cd sysbench-1.0

   安装依赖

yum install -y automake libtool

   安装:

1 ./autogen.sh
2 ./configure
3 export LD_LIBRARY_PATH=/home/zhutong/DB/mysql-5.7.21/include #这里换成机器中mysql路径下的include
4 make
5 make install

   安装成功:

[[email protected] sysbench-1.0]# sysbench --version
sysbench 1.0.9

     报错:

sysbench: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

   解决办法:  

vi /etc/ld.so.conf
下边加一行数据库的安装lib目录
我的:
/home/mysql/lib

    查看动态链接库中是否存在 libmysqlclient.so.20   

ldconfig -p| grep mysql
libmysqlclient.so.18 (libc6,x86-64) =>/usr/lib64/mysql/libmysqlclient.so.18

   不存在创建软连接并刷新动态链接库 

ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib/
ldconfig

    再次查看

ldconfig -p| grep mysql
  完美解决

三、使用sysbench 测试表

  参数须知

  

  MySQL连接信息参数

  • --mysql-host:MySQL服务器主机名,默认localhost;如果在本机上使用localhost报错,提示无法连接MySQL服务器,改成本机的IP地址应该就可以了。
  • --mysql-port:MySQL服务器端口,默认3306
  • --mysql-user:用户名
  • --mysql-password:密码

  MySQL执行参数

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

  1、准备数据 

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-table-engine=innodb  --db-driver=mysql --mysql-db=cloud-data  --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 --mysql-socket=/tmp/mysql.sock prepare

 

  技术分享图片

  2、执行测试

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-table-engine=innodb  --db-driver=mysql --mysql-db=cloud-data  --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 --mysql-socket=/tmp/mysql.sock run

  技术分享图片

   清理数据:

  技术分享图片

  分析结果:  

  其中,对于我们比较重要的信息包括:

  queries:查询总数及qps

  transactions:事务总数及tps

  Latency-95th percentile:前95%的请求的最大响应时间,本例中是23.1毫秒。



以上是关于sysbench工具和mysql的基准测试的主要内容,如果未能解决你的问题,请参考以下文章

mysql测试和sysbench工具详解

详解MySQL基准测试和sysbench工具

sysbench工具和mysql的基准测试

MySQL基准测试工具sysbench安装

myql基准测试工具Sysbench

mysql基准测试与sysbench工具