sysbench mysql测试_使用sysbench对MySQL进行测试
为什么要测试,测什么东西?
测试的种类非常多,测试的目的也非常多,我这里主要的目的就两个
测试MySQL的极限IO
对比不同版本MySQL,不同参数, 不同硬件,不同系统对MySQL的性能影响
为什么选择sysbench
因为MySQL官方的测试就是用sysbench哦
尽量选择最新版本的sysbench哦,大于0.4版本的sysbench有实时显示功能
如何下载sysbench
文档在哪里
如何安装
* 基本步骤
cd sysbench-1.0;
./autogen.sh;
./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib/;
make;
make install;
* 过程中可能会遇到的故障
sysbench: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
* 解决方案
export LD_LIBRARY_PATH=/usr/local/mysql/lib/;
* 测试是否安装成功
shell> sysbench --version
sysbench 1.0
介绍sysbench的核心用法
它可以用来测试很多东西,测试io,cpu,mem,mysql,oracle,pg等等。
这里主要介绍我关心的两个,IO & MySQL
以下前半部分是0.4版本的用法,0.4以上的版本用法不一样,会注明。
一、通用语法
sysbench [common-options] --test=name [test-options] command
command
* prepare
准备阶段,也就是装载数据。
filo test 中: 就是创建指定大小的文件
oltp test 中: 就是创建指定大小的表
* run
实际测试阶段
* cleanup
收尾阶段,清除之前测试的数据。
common-options
只介绍常用的选项
选项
描述
默认值
--num-threads
多少个线程
1
--max-requests
多少个请求,0意味着无限制
1000
--max-time
测试多长时间,0意味着无限制
0
--test
测试什么模块
必须要求
--report-interval
阶段性的汇报测试统计信息,0.4以上版本新增
--test=fileio 模块的选项
提前注明:--file-test-mode
* seqwr
sequential write
* seqrewr
sequential rewrite
* seqrd
sequential read
* rndrd
random read
* rndwr
random write
* rndrw
combined random read/write
test option for fileio
选项
描述
默认值
--file-num
创建文件的数量
128
--file-block-size
IO操作的大小
16k
--file-total-size
所有文件的总大小
2G
--file-test-mode
seqwr,seqrewr, seqrd, rndrd, rndwr, rndwr(上面已经介绍)
必须
--file-io-mode
i/O 模式,sync, async, fastmmap, slowmmap
sync
--file-extra-flags
以额外的标记(O_SYNC,O_DSYNC,O_DIRECT)打开
-
--file-fsync-freq
多少请求后使用fsync
100
--file-fsync-all
每次写IO都必须fsync
no
--file-fsync-mode
用什么样的模式来同步文件fsync, fdatasync (see above)
fsync
--file-rw-ratio
随机读写请求的比例
1.5
举例:
$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw prepare
$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw run
$ sysbench --num-threads=16 --test=fileio --file-total-size=3G --file-test-mode=rndrw cleanup
OLTP-MySQL
此模式用于测试真实数据库性能。在prepare阶段创建表,sbtest默认
CREATE TABLE `sbtest` (
`id` int(10) unsigned NOT NULL auto_increment,
`k` int(10) unsigned NOT NULL default '0',
`c` char(120) NOT NULL default '',
`pad` char(60) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `k` (`k`));
在run阶段
simple模式
SELECT c FROM sbtest WHERE id=N
Point queries
SELECT c FROM sbtest WHERE id=N
Range queries:
SELECT c FROM sbtest WHERE id BETWEEN N AND M
Range SUM() queries
SELECT SUM(K) FROM sbtest WHERE id BETWEEN N and M
Range ORDER BY queries
SELECT c FROM sbtest WHERE id between N and M ORDER BY c
Range DISTINCT queries
SELECT DISTINCT c FROM sbtest WHERE id BETWEEN N and M ORDER BY c
UPDATEs on index column
UPDATE sbtest SET k=k+1 WHERE id=N
UPDATEs on non-index column:
UPDATE sbtest SET c=N WHERE id=M
DELETE queries
DELETE FROM sbtest WHERE id=N
INSERT queries
INSERT INTO sbtest VALUES (...)
oltp test模式通用参数
选项
描述
默认值
--oltp-table-name
表的名字
sbtest
--oltp-table-size
表的行数
10000
--oltp-tables-count
表的个数
1
--oltp-dist-type
热点数据分布{uniform(均匀分布),Gaussian(高斯分布),special(空间分布)}。默认是special
special
--oltp-dist-pct
special:热点数据产生的比例
1
--oltp-dist-res
special:热点数据的访问频率
75
--oltp-test-mode
simple,complex(以上介绍)
complex
--oltp-read-only
只有select 请求
off
--oltp-skip-trx
不用事务
off
--oltp-point-selects
一个事务中简单select查询数量
10
--oltp-simple-ranges
一个事务中简单range查询的数量
1
--oltp-sum-ranges
sum range的数量
1
--oltp-order=ranges
order range的数量
1
mysql test 参数
--mysql-host=[LIST,...] MySQL server host [localhost]
--mysql-port=[LIST,...] MySQL server port [3306]
--mysql-socket=[LIST,...] MySQL socket
--mysql-user=STRING MySQL user [sbtest]
--mysql-password=STRING MySQL password []
--mysql-db=STRING MySQL database name [sbtest]
--mysql-table-engine=STRING storage engine to use for the test table {myisam,innodb,bdb,heap,ndbcluster,federated} [innodb]
--mysql-engine-trx=STRING whether storage engine used is transactional or not {yes,no,auto} [auto]
--mysql-ssl=[on|off] use SSL connections, if available in the client library [off]
--mysql-ssl-cipher=STRING use specific cipher for SSL connections []
--mysql-compression=[on|off] use compression, if available in the client library [off]
--myisam-max-rows=N max-rows parameter for MyISAM tables [1000000]
--mysql-debug=[on|off] dump all client library calls [off]
--mysql-ignore-errors=[LIST,...]list of errors to ignore, or "all" [1213,1020,1205]
--mysql-dry-run=[on|off] Dry run, pretent that all MySQL client API calls are successful without executing them [off]
以上0.4版本的语法介绍完毕。
接下来是大于0.4版本的新语法,尤其是--test=oltp模块
用--test=xx.lua (完整路径来传递)来代替
FileIO实战
磁盘:S3610 * 6 raid10, 内存128G
测试出相关场景下的极限IOPS
随机读写(3:2 oltp场景)
* sysbench --num-threads=16 --report-interval=3 --max-requests=0 --max-time=300 --test=fileio --file-num=200 --file-total-size=200G --file-test-mode=rndrw --file-block-size=16384 --file-extra-flags=direct run
随机读写(5:1 oltp场景)
* sysbench --num-threads=16 --report-interval=3 --max-requests=0 --max-time=300 --test=fileio --file-num=200 --file-total-size=200G --file-test-mode=rndrw --file-block-size=16384 --file-extra-flags=direct --file-rw-ratio=5 run
随机写
* sysbench --num-threads=16 --report-interval=3 --max-requests=0 --max-time=300 --test=fileio --file-num=200 --file-total-size=200G --file-test-mode=rndwr --file-block-size=16384 --file-extra-flags=direct run
随机读
* sysbench --num-threads=16 --report-interval=3 --max-requests=0 --max-time=300 --test=fileio --file-num=200 --file-total-size=200G --file-test-mode=rndrd --file-block-size=16384 --file-extra-flags=direct run
MySQL5.6 vs MySQL5.7 测试
磁盘:S3610 * 6 raid10, 内存128G
Point select
* 产生数据
sysbench --num-threads=128 --report-interval=3 --max-requests=0 --max-time=300 --test=/root/sysbench-1.0/sysbench/tests/db/select.lua --mysql-table-engine=innodb --oltp-table-size=50000000 --mysql-user=sysbench --mysql-password=sysbench --oltp-tables-count=2 --mysql-host=xx --mysql-port=3306 prepare
* 执行
sysbench --num-threads=128 --report-interval=3 --max-requests=0 --max-time=300 --test=/root/sysbench-1.0/sysbench/tests/db/select.lua --mysql-table-engine=innodb --oltp-table-size=50000000 --mysql-user=sysbench --mysql-password=sysbench --oltp-tables-count=2 --mysql-host=xx --mysql-port=3306 run
Point oltp
* 产生数据
sysbench --num-threads=128 --report-interval=3 --max-requests=0 --max-time=300 --test=/root/sysbench-1.0/sysbench/tests/db/oltp.lua --mysql-table-engine=innodb --oltp-table-size=50000000 --mysql-user=sysbench --mysql-password=sysbench --oltp-tables-count=2 --mysql-host=xx --mysql-port=3306 prepare
* 执行
sysbench --num-threads=128 --report-interval=3 --max-requests=0 --max-time=300 --test=/root/sysbench-1.0/sysbench/tests/db/oltp.lua --mysql-table-engine=innodb --oltp-table-size=50000000 --mysql-user=sysbench --mysql-password=sysbench --oltp-tables-count=2 --mysql-host=xx --mysql-port=3306 run
结论
在性能方面,虽然官方号称5.7性能比5.6快3倍,但是在实际测试中5.7比5.6却稍微差一点点
是否会选择5.7生产环境?当然,因为5.7的新特性太诱人了
参考:
sysbench mysql测试_使用sysbench对MySQL进行测试相关推荐
- sysbench mysql测试_用sysbench测试mysql和服务器性能
关于sysbench测试步骤 关于sysbench调试和安装请参考: http://blog.chinaunix.net/uid-20682026-id-3138466.html 下载地址: [roo ...
- 连接mysql工具_非常实用的mysql可视化连接工具,开发测试必备软件,快收藏吧...
今天小编给大家介绍一款mysql数据库连接工具,对于很多开发或者测试人员,在本机安装mysql连接客户端很麻烦,但是又需要查看数据库数据,此时简单快速的查看数据库工具就很重要了,今天给大家介绍一个带有 ...
- centos 查看mysql 服务器配置_在CentOS上MySQL数据库服务器配置方法
http://www.jb51.net/article/23255.htm ======================== 1 . 无密码登录: mysql -u root 在已经有密码的情况下报错 ...
- 打开和关闭mysql服务器_启动和关闭MySQL服务器
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 作为MySQL管理员,一个普通的目标就是确保服务器尽可能地处于运行状态,使得客户机能够随时访问它.但是,有时最好关闭服务器 ...
- npm mysql 事务_一文解读MySQL事务
经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?本文就帮大家梳理一下. MySQL 事务 本文所说的 MySQL 事务都是指在 I ...
- 连接mysql数据库_解决Navicat连接MySQL数据库报错问题
今天在用Navicat连接另外一台主机上的MySQL时报错: Host is not allowed to connect to this MySQL server 默认安装的mysql无法远程连接是 ...
- docker mysql主从_使用docker 实现MySQL主从同步/读写分离
1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...
- golang mysql 崩溃_使用GoLang与mysql连接失败
我试图使用Go语言连接MySql数据库并给我以下错误. sql: unknown driver "mysql" (forgotten import?) 我的守则 package m ...
- 阿里云mysql价格_阿里云超级计算mysql价格
Re阿里云的IO很不给力啊 有图有真相的啊. 这个是该机器的网络流量.这么低的流量 情何以堪 这就是 中国的阿里云啊?!! 和linode的vps比较起来,太搓了!! 希望解决处理! -------- ...
最新文章
- model.fit以及model.fit_generator区别及用法
- git 拉新项目_git上拉取项目
- IDA*-洛谷P1379 八数码难题
- python 查看当前目录_Python的武器库11:os模块
- mysql 表单属性_php表单常用属性有什么?
- [JQuery代码]超酷鼠标滑过背景高亮效果
- MacBook配置快捷轻量的C/C++环境
- 沿环形路径创建渐变画笔
- .Net转Java自学之路—Spring框架篇二(IOC注解、AOP)
- 《沉浸式线性代数》完整版正式发布,全交互式体验
- php文章详情页排版,WordPress如何自定义文章详情页模板
- opencms10.5.1如何汉化
- 如何查看dns服务器信息,如何查看本地DNS服务器IP地址(图文教程)?
- makefile predefined variable $^ $@
- 19.Eager模式
- 网站日志流量分析系统之(日志收集)
- 成功解决代码运行的时候出现的warnings警告问题
- FIREBIRD使用经验总结
- SecureCRSecureFXPortable64 下载
- 如何使用windebug追踪ASL CODE
热门文章
- module 'matplotlib' has no attribute 'verbose'
- freeimage例子资料整理
- 目标跟踪算法五:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking
- Linux下编译cscope,linux环境下cscope使用
- php 请求拦截,解决拦截器对ajax请求的拦截实例详解
- 1载波把32个信道按_「防疫」截至8月27日,单日确诊新增32例,张文宏带来1个坏消息...
- 度量 数据突变_4篇Nature“霸屏”!史上最大规模人类遗传变异体数据库发布
- python制作音乐模块_用Python打造一个只属于你的专属音乐播放器,享受动手的快乐!...
- MySql分表、分库、分片和分区的区别
- 场地测量的方法和程序_建筑施工测量的内容与方法