为什么要测试,测什么东西?

测试的种类非常多,测试的目的也非常多,我这里主要的目的就两个

测试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进行测试相关推荐

  1. sysbench mysql测试_用sysbench测试mysql和服务器性能

    关于sysbench测试步骤 关于sysbench调试和安装请参考: http://blog.chinaunix.net/uid-20682026-id-3138466.html 下载地址: [roo ...

  2. 连接mysql工具_非常实用的mysql可视化连接工具,开发测试必备软件,快收藏吧...

    今天小编给大家介绍一款mysql数据库连接工具,对于很多开发或者测试人员,在本机安装mysql连接客户端很麻烦,但是又需要查看数据库数据,此时简单快速的查看数据库工具就很重要了,今天给大家介绍一个带有 ...

  3. centos 查看mysql 服务器配置_在CentOS上MySQL数据库服务器配置方法

    http://www.jb51.net/article/23255.htm ======================== 1 . 无密码登录: mysql -u root 在已经有密码的情况下报错 ...

  4. 打开和关闭mysql服务器_启动和关闭MySQL服务器

    欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 作为MySQL管理员,一个普通的目标就是确保服务器尽可能地处于运行状态,使得客户机能够随时访问它.但是,有时最好关闭服务器 ...

  5. npm mysql 事务_一文解读MySQL事务

    经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?本文就帮大家梳理一下. MySQL 事务 本文所说的 MySQL 事务都是指在 I ...

  6. 连接mysql数据库_解决Navicat连接MySQL数据库报错问题

    今天在用Navicat连接另外一台主机上的MySQL时报错: Host is not allowed to connect to this MySQL server 默认安装的mysql无法远程连接是 ...

  7. docker mysql主从_使用docker 实现MySQL主从同步/读写分离

    1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...

  8. golang mysql 崩溃_使用GoLang与mysql连接失败

    我试图使用Go语言连接MySql数据库并给我以下错误. sql: unknown driver "mysql" (forgotten import?) 我的守则 package m ...

  9. 阿里云mysql价格_阿里云超级计算mysql价格

    Re阿里云的IO很不给力啊 有图有真相的啊. 这个是该机器的网络流量.这么低的流量 情何以堪 这就是 中国的阿里云啊?!! 和linode的vps比较起来,太搓了!! 希望解决处理! -------- ...

最新文章

  1. model.fit以及model.fit_generator区别及用法
  2. git 拉新项目_git上拉取项目
  3. IDA*-洛谷P1379 八数码难题
  4. python 查看当前目录_Python的武器库11:os模块
  5. mysql 表单属性_php表单常用属性有什么?
  6. [JQuery代码]超酷鼠标滑过背景高亮效果
  7. MacBook配置快捷轻量的C/C++环境
  8. 沿环形路径创建渐变画笔
  9. .Net转Java自学之路—Spring框架篇二(IOC注解、AOP)
  10. 《沉浸式线性代数》完整版正式发布,全交互式体验
  11. php文章详情页排版,WordPress如何自定义文章详情页模板
  12. opencms10.5.1如何汉化
  13. 如何查看dns服务器信息,如何查看本地DNS服务器IP地址(图文教程)?
  14. makefile predefined variable $^ $@
  15. 19.Eager模式
  16. 网站日志流量分析系统之(日志收集)
  17. 成功解决代码运行的时候出现的warnings警告问题
  18. FIREBIRD使用经验总结
  19. SecureCRSecureFXPortable64 下载
  20. 如何使用windebug追踪ASL CODE

热门文章

  1. module 'matplotlib' has no attribute 'verbose'
  2. freeimage例子资料整理
  3. 目标跟踪算法五:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking
  4. Linux下编译cscope,linux环境下cscope使用
  5. php 请求拦截,解决拦截器对ajax请求的拦截实例详解
  6. 1载波把32个信道按_「防疫」截至8月27日,单日确诊新增32例,张文宏带来1个坏消息...
  7. 度量 数据突变_4篇Nature“霸屏”!史上最大规模人类遗传变异体数据库发布
  8. python制作音乐模块_用Python打造一个只属于你的专属音乐播放器,享受动手的快乐!...
  9. MySql分表、分库、分片和分区的区别
  10. 场地测量的方法和程序_建筑施工测量的内容与方法