高性能Mysql笔记(二)

MySQL基准测试

基准测试就是针对系统设计的一种压力测试。

2.1 为什么需要基准测试

基准测试是唯一方便有效的,可以学习系统在给定的工作负载下会发生什么的方法。基准测试的一个主要问题在于其不是真实压力的测试。基准测试施加给系统的压力相对真实压力来说,通常比较简单。

基准测试可以完成以下工作:

  • 验证基于系统的一些假设,确认这些假设是否符合实际情况。
  • 重现系统中的某些异常行为,以解决这些异常。
  • 测试系统当前的运行情况。
  • 模拟比当前系统更高的负载,以找出系统随着压力增加而可能遇到的扩展性瓶颈。
  • 测试应用适用可变环境的能力。例如,通过基准测试,可以发现系统在随机的并发峰值下的性能表现,或者是不同配置的服务器之间的性能表现。
  • 测试不同的硬件,软件和操作系统的配置。

2.2 基准测试的策略

基准测试分为两种主要的策略:一是针对整个系统的整体测试(也被称为集成式),二是单独测试MYSQL(也被称为单组件式)。

针对真个系统做集成式测试的原因主要有以下几点:

  • 测试整个应用系统,包括web服务器,应用代码,网络和数据库是非常有用的,因为用户关注的是整体的性能。
  • Mysql并非总是应用的瓶颈。
  • 只有对应用做整体测试,才能发现各部分之间的缓存带来的影响。
  • 整体应用的集成式测试更能揭示应用的真实表现,单独组件的测试一般很难做到。

若只需要关注MYSQL的性能,基于以下情况,可以只选择MYSQL。

  • 需要比较不同的schema或查询的性能。
  • 针对应用中某个具体问题的测试。
  • 避免漫长的基准测试,可以通过短期的基准测试,做快速的“周期循环”,来检测出某些调整后的效果。

2.2.1 测试何种指标

有时候需要用不同的方法测试不同的指标。比如,针对延迟和吞吐量就需要采用不同的测试方法。

吞吐量:吞吐量指的是单位时间内的事务处理数。

响应时间或延迟:通常用于测试任务所需的整体时间。
并发性:并发性基准测试需要关注的是正在工作中的并发操作,或者是同时工作中的线程数或者连接数。例如:Web服务器的并发性仅仅只表示会话存储机制可以处理多少数据的能力。Web服务器的并发性更准确的度量指标,应该是在任意时间有多少同时发生的并发请求。
**可扩展性:**给系统增加一倍的工作,在理想情况下就能获得两倍的结果。(即吞吐量增加一倍)

2.3 基准测试方法

在讨论如何设计好基准测试之前,先看一下如何避免一些常见的错误。

  • 使用真实数据的子集而不是全集。
  • 使用错误的数据分析。
  • 使用不真实的分布参数
  • 在多用户场景中,只做单用户测试。
  • 在单服务器上测试分布式应用。
  • 也真实用户行为不匹配。
  • 忽略系统预热的过程。
  • 使用默认的服务器配置。
  • 测试时间太短。

大概分为以下几步:
第一,设计和规划基准测试,规划基准测试的第一步是提出问题并明确目标。然后决定是采用标准的基准测试,还是专用的测试。
第二,运行时间,基准测试应该运行足够长的时间。
第三,获取系统性能和状态,在执行基准测试时,需要尽可能地收集被测试系统的信息。最好为基准测试建立一个目录,并且每执行一轮测试都创建单独的子目录,将测试结果,配置文件,测试指标,脚本和其他相关说明都保存其中。
第四,获得准确的测试结果,要注意很多因素,包括外部的压力,性能分析和监控系统,详细的日志记录,周期性作业,以及其他一些因素,都会影响到测试结果。
第五,运行基准测试并分析结果,可以使用自动化基准测试。方式有很多,可以是一个Makefile文件或者一组脚本。要尽可能地使用所有测试过程都自动化,包括装载数据,系统预热,执行测试,记录结果等。

2.4 基准测试工具

2.4.1 集成式测试工具
ab
ab是一个Apache HTTP 服务器基准测试工具。它可以测试HTTP服务器每秒最多可以处理多少请求。
http_load
为Web服务器进行测试,比ab更灵活。可以通过一个输入文件提供多个URL,http_load在这些URL中随机选择进行测试。
JMeter
JMeter用来测试Web应用的,也可用于测试其他诸如FTP服务器。
2.4.2 单组件式测试工具
mysqlslap
mysqlslap 可以模拟服务器的负载,并输出计时信息。测试时可以执行并发连接数,并指定sql语句,如果没有指定sql语句,mysqlslap会自动生成查询schema的select语句。
mysql Benchmark Suite(sql-bench)
在Mysql的发行包中也提供了一款自己的基准测试套件,可以用在不同数据库服务器上进行比较测试。它是单线程的,主要用于测试服务器执行查询的速度。结果会显示哪种类型的操作在服务器上执行得更快。
Super Smack
Super Smack是一款用于MySQL和PostgreSQL 的基准测试工具,可以提供压力测试和负载生成。
sysbench
sysbench 是一款多线程系统压测工具。它可以根据影响数据库服务器性能的各种因素来评估系统的性能。
(比较重要!!!可以学习如何使用oltp和fileio测试。oltp基准测试可以很方便地比较不同系统的性能。另外一方面,文件系统和磁盘基准测试,则可以在系统出现问题时有效地诊断和隔离异常的组件。)
这里还有其他,懒得写了 。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值