基准测试是MySQL新手和专家都需要掌握的一项基本技能,简单的说,基准测试是针对系统设计的一种压力测试,目标是为了掌握系统的行为,有时候也是为了做硬件的可靠性测试。

一、为什么要进行基准测试

基准测试是唯一方便有效的、可以学习系统在给定的工作负载下会发生什么的方法,基准测试可以关系系统在不同的压力下的行为,评估系统的容量,掌握哪些是重要的变化,或者观察系统是如何处理不同的数据。基准测试可以在系统实际负载之外创建一些虚构的场景进行测试基准测试可以完成以下工作。

  • 验证基于系统的一些假设,确认这些假设是否符合实际情况
  • 重现系统中的某些异常行为,以解决这些异常
  • 测试系统当前的运行情况
  • 模拟比当前更高的负载,以找出扩展性瓶颈
  • 规划未来的业务增长,通过基准测试确认未来系统增长所需要的资源
  • 测试应用适应可辨环境的能力
  • 测试数据库在不同的硬件,软件和操作系统配置下的不同表现
  • 证明新采购的设备的配置是否正确,通过基准测试观察数据库的表现来对配置进行调整

二、基准测试的策略

基准测试主要由两种策略,一是针对系统的整体测试,另外是单独测试MySQL,两种测试也被称为集成测试和单组件式基准测试

进行集成测试的动机:

  • 关注应用整体的性能,包括Web服务器、应用代码、网络和数据库
  • 确认MySQL是否是应用的瓶颈
  • 发现应用各个部分之间的缓存带来的影响
  • 揭示应用的真实表现,而不是只是数据库

只进行MySQL组件测试动机:

  • 需要比较不同的schema或查询的性能
  • 针对应用中某个具体问题的测试
  • 为了避免漫长的基准测试

三、衡量基准测试的指标

  1. 吞吐量
  2. 响应时间
  3. 并发性
  4. 可扩展性

一般对系统进行基准测试都重这几个指标出发,作为衡量标准,来验证MySQL的运行情况,并不是说每次都必须对所有这些指标进行验证,比较,而是来测试对用户来说最重要的指标,从应用的需求出发,设计对指标测试的方案

四、基准测试流程

  1. 设计规划基准测试
  2. 确定测试应该运行的时长
  3. 获取系统性能和状态
  4. 获取准确的测试结果
  5. 运行基准测试幷分析结果
  6. 将测试结果绘制成图形进行观察

五、基准测试工具

集成测试有诸如ab、http_load、JMeter等测试工具,而单组件测试工具有mysqlslap、MySQL benchmark suite、super smack、database Test suite、sysbench等工具

总结:

基准测试是我们应该有所了解的知识,如果还没有进行过基准测试,可以考虑从sysbench入手,进行oltp和fileio测试,然后通过gnuplot或者R对结果进行绘图,进行直观的分析。