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的基准测试的主要内容,如果未能解决你的问题,请参考以下文章