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 相关文章推荐
浅析InnoDB索引结构
Apr 05 MySQL
MySQL系列之十五 MySQL常用配置和性能压力测试
Jul 02 MySQL
解决mysql的int型主键自增问题
Jul 15 MySQL
SQL实现LeetCode(175.联合两表)
Aug 04 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
MySQL实现字段分割一行转多行的示例代码
Jul 07 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 MySQL
MySQL count(*)统计总数问题汇总
Sep 23 MySQL
SQL Server数据库的三种创建方法汇总
May 08 MySQL
详解MySQL的内连接和外连接
May 08 MySQL
Mysql MVCC机制原理详解
详解MySQL 用户权限管理
mysql死锁和分库分表问题详解
Apr 16 #MySQL
MySQL命令行操作时的编码问题详解
Idea连接MySQL数据库出现中文乱码的问题
Apr 14 #MySQL
mysql的MVCC多版本并发控制的实现
mysql查询的控制语句图文详解
You might like
PHP禁止页面缓存的代码
2011/10/23 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
Pytorch的mean和std调查实例
2020/01/02 Python
python用什么编辑器进行项目开发
2020/06/17 Python
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
医大实习自我鉴定
2013/12/07 职场文书
法律系毕业生求职信
2014/05/28 职场文书
大学迎新标语
2014/06/26 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
python glom模块的使用简介
2021/04/13 Python
CSS的calc函数用法小结
2022/06/25 HTML / CSS