文档章节

MySQL基准测试

吴伟祥
 吴伟祥
发布于 2018/05/08 13:47
字数 2202
阅读 47
收藏 0

基准测试是  指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。例如,对计算机CPU进行浮点运算、数据访问的带宽和延迟等指标的基准测试,可以使用户清楚地了解每一款CPU的运算性能及作业吞吐能力是否满足应用程序的要求;

 

高性能MySQL -MySQL基准测试,(http_load , sysbench 使用介绍 )

一、为什么需要基准测试?

答:基准测试是针对系统设计的一种压力测试。可以观察系统在不同的压力下的行为,评估系统的容量,掌握哪些是重要的变化,或者观察系统如何处理不同的数据。

⚠️ 不能根据测试结果做简单的推断。例如:假设想知道使用新数据库服务后,系统能支撑多大的业务增长,这时候不能简单地通过测试结果支持的TPS(每秒事务数)是原系统推断说新系统一定可以支持40倍的业务增长,因为在业务增长的同时,系统的流量、用户、数据以及不同数据之间的交互都在增长,它们不可能都有40倍的支撑能力,尤其是相互之间的关系。

二、 基准测试的策略

  1. 针对整个系统的整体测试(集成式)2. 单独测试Mysql(单组件式)。

集成式测试的好处:

  1. 测试整个应用系统,包括Web服务器,应用代码,网络和数据库是非常有用的。因为用户关注的并不仅仅是MySQL本身的性能,而是整体应用的性能。
  2. Mysql并非总是应用的瓶颈
  3. 只有对应用整体测试,才能发现各部分之间的缓存带来的影响。
  4. 整体应用集成式更能揭示应用的真实表现

如果能在真实的数据集上执行重复的查询,那么针对Mysql的基准测试也是游泳的,但是数据本身和数据集的大小是真实的,可以采用生成环境的数据快照。

三、测试何种指标:

  1. 吞吐量 单位时间内的事务处理数
  2. 响应时间或者延迟 测试任务所需的整体时间
  3. 并发性 任意时间内有多少同时发生的并发请求
  4. 可扩展性 給系统增加一倍的资源,可以获得多少的吞吐量

四、基准测试方法

常见错误❌: 
1. 使用真实数据的子集而不是全集。例如应用需要几百GB的数据,测试只有1GB数据 
2. 使用错误的数据分布。例如使用均匀分布的数据测试,而系统的真是数据与很多热点区域。 
3. 使用不真实的分布参数,例如假定所有用户的个人信息会被平均地读取。 
4. 在多用户场景中,只做单用户的测试 
5. 在单服务区上测试分布式应用。 
6. 与真实用户行为不匹配。例如Web页面中的“思考时间”。真实用户在请求到一个页面会阅读一段时间,而不是不停顿地一个接一个点击相关链接。 
7. 反复执行同一个查询。 
8. 没有检查错误。本应该慢的查询突然变快了,就应该检查是否有错误产生。 
9. 忽略了系统预热的过程 
10. 使用默认的服务器配置 
11. 测试时间太短。

五、基准测试的注意事项

  1. 设计和规划基准测试 
    选择一个有代表性的时间段,比如高峰期一小时,或者一整天,记录生产系统上的所有查询。

  2. 基准测试应该运行多长时间 
    有时候无法确认测试需要多长的时间才足够。可以让测试一直运行,持续观察知道确认系统以及稳定。

  3. 获取系统性能和状态 
    最好为基准测试建立一个目录,并且每执行一轮测试都创建单独的子目录,将测试结果,配置文件,测试指标,脚本和其他相关说明保存其中。

六、基准测试工具

1. 集成式测试工具

  1. ab Apache Http服务器基准测试工具。可以测试Http服务器每秒最多可以处理多少请求。只能针对单个URL进行尽可能快的压力测试
  2. http_load 比ab更加灵活,可以通过一个输入文件提供多个URL,http_load在这些URL中随机选择进行测试,也可以定制,使其按照时间比率进行测试。
  3. JMeter 
    是一个java应用程序,可以加载其他应用并测试其性能。它虽然是设计用来测试Web应用的,但也可以用于测试其他诸如FTP服务器。比ab,http_load都要复杂得多。有绘图接口。

2. 单组件式测试工具

  1. mysqlslap 
    可以模拟服务器的负载,并输出计时信息。
  2. MySQL Benchmark Suite(sql_bench) 
    在Mysql的发行包中也提供了一款自己的基准测试套件,可以用于在不同数据库服务器上进行测试,是单线程的,主要用于测试服务器执行查询的速度。
  3. sysbench 
    多线程系统压测工具。可以根据影响数据库服务器性能的各种因素来评估系统的性能,例如,可以用来测试文件I/O、操作系统调度去、内存分配和传输速度、POSIX线程。

七、MySQL 的BENCHMARK()函数

这里写图片描述
如同,利用BENCHMARK()函数可以测试 MD5()和SHA1()哪个执行更快,但是这个函数只是简单地返回服务器执行表达式的时间,而不会涉及分析和优化的开销,不适合用来做真正的基准测试,因为很难理解真正要测试什么。

部分基准测试工具的使用

根据以上的学习,我在网上找到工具结合高性能MySQL书籍开始试用。

http_load

1. 安装

老办法,官网wget,然后tar 解压 
然后cd进入目录,之后make, make install 两个命令安装即可 
⚠️1. make前要先有gcc编译器,但一般Linux都有集成 
2. 可能会报一个错误: 
无法创建普通文件”/usr/local/man/man1”: 没有那个文件或目录 
解决方法:mkdir /usr/local/man 手动建立一个就可以 
记得重新make install

2.使用

-parallel 简写-p :含义是并发的用户进程数 
-fetches 简写-f :含义是总计的访问次数 
-rate 简写-r :含义是每秒的访问频率 
-seconds 简写-s :含义是总计的访问时间 
url 是你要访问的网址名,参数可以是单个的网址也可以使包含网址的文件

所以可以先创建一个urls.txt,然后每一行放一个url 
然后命令行运行 http_load -paraller 1 -seconds 10 urls.txt 
即一个并发进程,总计10秒访问时间

当我尝试用500个并发访问时,阿里云学生机已经吃不消了。http_load -parallel 500 -second 10 urls.txt

sysbench

该工具可以在https://github.com/akopytov/sysbench github上面wget,然后解压,之后按照readme的步骤安装

⚠️./autogen.sh 可能报错 
需要1. 安装yum install automake 2. 安装yum install libtool 
2. 可能在./configure 之后会error,错误信息大概是没找到mysql库之类的,找了各种解决办法,都说配置一下目录,结果还是不对。后来我尝试 yum install mysql-devel ,之后再运行就可以了。

测试1. CPU基准测试

这里写图片描述
上图可以看到我的服务器的CPU情况 
接下来运行测试 sysbench-master]# sysbench ==test=cpu --cpu-max-prime=2000 run 
这里写图片描述
可以看到需要的total时间,这个基准测试可以用来判断两台服务器之间的CPU性能

测试2. 文件I/O基准测试

文件I/O (fileio)基准测试可以测试系统在不同I/O负载下的性能 
对于比较不同的硬盘驱动器,不同的RAID卡,不同的RAID模式,都会很有帮助。可以根据测试结果来调整I/O子系统。

1. 准备阶段

sysbench --test=fileio --file-num=16 --file-block-size=16384 --file-total-size=2G prepare
  • 1

1. 测试运行阶段

sysbench –test=fileio –file-num=16 –file-block-size=16384 –file-total-size=2G –num-threads=4 –max-requests=100000000 –max-time=180 –file-test-mode=seqwr –file-extra-flags=direct run

结果: 
这里写图片描述

–file-test-mode=seqwr(顺序写入) 
seqrewr 顺序重写 
seqrd顺序读取 
rndrd随机读取 
rndwr随机写入 
rndrw混合随机读/写

本文转载自:https://blog.csdn.net/return_true_hang/article/details/61199333

吴伟祥

吴伟祥

粉丝 34
博文 500
码字总数 285677
作品 0
泉州
后端工程师
私信 提问
加载中

评论(0)

MySQL的基准测试

MySQL的基准测试 基准测试:基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。直接、简单、用于评估服务器的处理能力。...

Panda_Jerry
2017/11/07
0
0
详解MySQL基准测试和sysbench工具

原文出处:编程迷思 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的。本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法。...

编程迷思
2018/04/25
0
0
mysql基准测试 ,java测试

Mysql 基准测试 基准测试是针对系统设计的一种压力测试。 一、基准测试的主要工作: 1.验证基于系统的一些假设,确认这些假设是否符合实际情况(我们在测试中主要做的也还,只是一些功能测试...

@ccny
2015/09/19
154
0
mysql运维-基准测试之sysbench

基准测试简介 ? 什么是基准测试:数据库的基准测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。 ? 基准测试与压力测试:基准测试可以理解为针对系统的一种压力测试。但基准测试...

坦途abc
2018/08/27
158
0
mysql性能测试工具-SysBench部署笔记

SysBench 是一个多线程的基准测试工具,主要用测试数据库服务器性能,测试功能主要包括:cpu性能、磁盘io性能、调度程序性能、内存分配及传输速度、POSIX线程性能、数据库性能(OLTP基准测试)...

enjoyer18
2014/04/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务-(Hystrix应用及原理)

Hystrix 的应用及原理 一.通过配置文件的方式使用hystrix 二.演示断路效果 三.通过图片查询断路流程 四.注解的方式演示hystrix this.metrics = initMetrics(metrics, this.commandGroup, th...

这很耳东先生
15分钟前
73
0
如何将旧Mac的数据迁移到新的MacBook Pro?

最新版的MacBook Pro已经上市,具有超凡魅力的Touch Bar开创了一个新时代。苗条的设计和华丽的显示效果也起到了推动运动的作用……!将数据从旧Mac传输到新Mac不再是一件漫长的事。您只需几个...

mac小叮当
17分钟前
32
0
推荐一款好用的第三方的windows远程管理工具

iis7远程桌面连接工具,又叫做iis7远程桌面管理软件,是一款绿色小巧,功能实用的远程桌面管理工具,其界面简洁,操作便捷,能够同时远程操作多台服务器,并且多台服务器间可以自由切换,适用...

汉美丽
21分钟前
59
0
使用.text()仅检索未嵌套在子标记中的文本

如果我有这样的html: <li id="listItem"> This is some text <span id="firstSpan">First span text</span> <span id="secondSpan">Second span text</span></li> 我正在尝试......

javail
27分钟前
45
0
MySQL调优系列——如何提高MySQL的查询效率

1、对查询进行优化,避免全表扫描,首先应考虑在where及order by涉及的列上建立索引。 2、避免在where子句对字段进行null值判断,否则会导致引擎放弃使用索引而进行全表扫描。 3、应尽量避免...

须臾之余
28分钟前
30
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部