MySQL性能压力基准测试工具sysbench的使用简介


Posted in MySQL onApril 21, 2021

1、sysbench介绍

这里介绍一款MySQL数据库的压力测试软件sysbench,用它来进行基准测试。

sysbench 是一个开源的、模块化的、跨平台的多线程性能测试工具,

可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。

目前支持的数据库有MySQL、Oracle 和PostgreSQL。

#项目下载地址:

https://launchpad.net/sysbench
http://github.com/akopytov/sysbench

该基准套件的想法是快速获得有关系统性能的印象,而无需设置复杂的数据库基准,甚至不需要安装数据库。
当前功能允许测试以下系统参数:

  • #CPU性能
  • file I/O performance #文件IO性能,磁盘IO性能
  • scheduler performance #调度程序性能
  • memory allocation and transfer speed #内存分配和传输速度
  • POSIX threads implementation performance #POSIX线程实现性能
  • database server performance (OLTP benchmark) #数据库服务器性能(OLTP基准)

Sysbench的oltp主要用于评估测试各种不同系统参数下的数据库负载情况。
相比0.4版本,后续的版本oltp测试主要结合了lua脚本,不需要修改源码,通过自定义lua脚本就可以实现不同业务类型的测试。 

SysBench的缺点:
模拟的表结构太简单,不像tpcc-mysql那样完整的事务系统,但对于MySQL性能压测对比还是很有用的。

2、sysbench安装过程

#安装相关依赖

mount /dev/cdrom /mnt
yum -y install make automake libtool pkgconfig libaio-devel libtool

#安装过程开始

#客户端lib包做个链接
ln -sf /mysql/app/mysql/lib/libmysqlclient.so.20 /usr/lib/libmysqlclient.so.20
#解压安装
cd /softtar zxvf sysbench-1.0.15.tar.gzcd sysbench-1.0.15./autogen.sh
./configure --prefix=/mysql/app/sysbench --with-mysql=/mysql/app/mysql --with-mysql-includes=/mysql/app/mysql/include/
#--with-mysql-libs=/usr/lib/
make && make install
#配置环境变量
vi ~/.bash_profile
PATH=$PATH:/mysql/app/sysbench/bin:$HOME/bin
source ~/.bash_profile
sysbench --version
#如果提示报错
sysbench: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

#接着在/etc/ld.so.cnf中加入/usr/lib这一行
[root@tse01 local]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/lib/
#执行ldconfig -v更新下配置就可以了
[root@tse01 local]# /sbin/ldconfig -v

#提示说明:

如果你在非标准位置安装的MySQL头文件和库(没有 mysql_config可以在找到PATH),

你可以明确指定--with-mysql-includes和--with-mysql-libs选项参数,如上面。

要在没有MySQL支持的情况下编译sysbench,请使用--without-mysql。
如果没有可用的数据库驱动程序,则与数据库相关的脚本将不起作用,但其他基准测试将起作用。

#常规命令行选项

下表列出了受支持的常用选项,它们的描述和默认值:

 

选项
描述
默认值
--threads
要创建的工作线程总数
1个
--events
要求总数的限制。0(默认值)表示没有限制
0
--time
总执行时间限制(以秒为单位)。0表示没有限制
10
--warmup-time
在启用统计信息的情况下运行实际基准测试之前,在禁用统计信息的情况下执行事件数秒钟。当您要从统计信息中排除基准测试运行的初始期间时,此功能很有用。在许多基准测试中,初始阶段并不具有代表性,因为CPU /数据库/页面和其他缓存需要一些时间进行预热
0
--rate
平均交易率。该数字指定所有线程平均每秒应执行多少事件(事务)。0(默认)表示无限制速率,即事件以尽可能快的速度执行
0
--thread-init-timeout
辅助线程初始化的等待时间(以秒为单位)
30
--thread-stack-size
每个线程的堆栈大小
32K
--report-interval
定期以指定的时间间隔(以秒为单位)报告中间统计信息。请注意,此选项生成的统计信息是按时间间隔而不是累积的。0禁用中间报告
0
--debug
打印更多调试信息
离开
--validate
尽可能验证测试结果
离开
--help
根据常规语法或指定的测试打印帮助,然后退出
离开
--verbosity
详细级别(0-仅关键消息,5-调试)
4
--percentile
sysbench测量所有已处理请求的执行时间,以显示统计信息,例如最小,平均和最大执行时间。对于大多数基准测试,了解与某个百分位数相匹配的请求执行时间值也很有用(例如,95%百分位数意味着我们应该丢弃最长请求的5%,并从其余请求中选择最大值)。此选项允许指定要计算的查询执行时间的百分等级
95
--luajit-cmd
执行LuaJIT控制命令。此选项等效于luajit -j。有关更多信息,请参见LuaJIT文档

请注意,可以通过附加相应的乘法后缀(K表示千字节,M表示兆字节,G表示千兆字节,T表示兆字节)
来指定所有大小选项(--thread-stack-size如此表中所示)的数值。

#sysbench使用[command]常用的有:

1) prepare准备测试,生成数据
2) run执行测试
3) cleanup清理数据
4) help
5) version

以上就是MySQL性能压力基准测试工具sysbench的使用简介的详细内容,更多关于MySQL sysbench的使用的资料请关注三水点靠木其它相关文章!

MySQL 相关文章推荐
mysql多表查询-笔记七
Apr 05 MySQL
超详细教你怎么升级Mysql的版本
May 19 MySQL
MySQL下使用Inplace和Online方式创建索引的教程
May 26 MySQL
MySQL5.7并行复制原理及实现
Jun 03 MySQL
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
Jun 26 MySQL
MySQL系列之三 基础篇
Jul 02 MySQL
mysql备份策略的实现(全量备份+增量备份)
Jul 07 MySQL
MySql子查询IN的执行和优化的实现
Aug 02 MySQL
MySQL配置主从服务器(一主多从)
Aug 07 MySQL
一次MySQL启动导致的事故实战记录
Sep 15 MySQL
mysql函数全面总结
Nov 11 MySQL
MySQL详细讲解变量variables的用法
Jun 21 MySQL
Mysql MVCC机制原理详解
详解MySQL 用户权限管理
mysql死锁和分库分表问题详解
Apr 16 #MySQL
MySQL命令行操作时的编码问题详解
Idea连接MySQL数据库出现中文乱码的问题
Apr 14 #MySQL
mysql的MVCC多版本并发控制的实现
mysql查询的控制语句图文详解
You might like
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
php的字符串用法小结
2010/06/08 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
php静态文件生成类实例分析
2015/01/03 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
Django+Vue跨域环境配置详解
2018/07/06 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
python 如何区分return和yield
2020/09/22 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
超市营业员岗位职责
2013/12/20 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
广播体操口号
2014/06/18 职场文书
平安工地汇报材料
2014/08/19 职场文书
个人主要事迹材料
2014/08/26 职场文书
2015年营业员工作总结
2015/04/23 职场文书
交通安全温馨提示语
2015/07/14 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang