目录
[toc]
概述
基准测试,是针对系统设计的一种压力测试。通常的目标是为了掌握系统的行为。是mysql新手和专家都需要掌握的一项基本技能。为什么需要基准测试。因为基准测试是唯一方便有效的、可以学习系统在给定的工作负载下会发生什么的方法。基准测试可以观察系统在不同压力下的行为,评估系统的容量,掌握哪些是重要的变化,或者观察系统如何处理不同的数据。
2.1基准测试的两种策略
针对整个系统的整体测试
mysql并非总是应用的瓶颈,通过整体的测试可以揭示这一点
只有对应用做整体的测试,才能发现各部分之间缓存带来的影响
整体应用的集成式测试更能揭示应用的真实表现,而单独组件测试无法做到这一点
单独测试Mysql
需要比较不同的schema或查询的性能
针对应用中的某个问题进行测试
避免漫长的基准测试过程
2.2基准测试相关指标
吞吐量(TPS)
指的是单位时间内事务处理数。
响应时间或者延迟
这个指标用于测试任务所需的整体时间。根据具体的应用,测试的时间单位可能是微秒、毫秒、秒或者分钟。根据不同的时间单位可以计算出平均响应时间、最小响应时间、最大响应时间和所占百分比。最大响应时间通常意义不大,因为测试时间越长,最大响应时间也可能变长。因此通常可以通过百分比响应时间来替代最大响应时间。例如:如果95%以上的响应时间是5毫秒,则表示人物在95%的时间段内完成。
并发性
并发性基准测试需要关注的是正在工作中的并发操作,或者是同时工作中的线程数或者连接。当并发性增加是,需要测量吞吐量是否下降,响应时间是否变长,如果是这样,应用可能就无法处理峰值压力。并发性测试通常不是为了测试应用能达到的并发度,而是为了测试应用在不同并发下的性能。
可扩展性
在系统的业务压力可能发生变化的情况下,测试可扩展性就非常必要了。可扩展性指的是,给系统增加一倍的工作,在理想情况下就能获得两倍的结果(吞吐量增加一倍)。当然,同时性能(响应时间)也必须在可以接受的范围内。大多数系统是无法达到如此理想的线性扩展的。随着压力的变化,吞吐量和性能都可能越来越差。
2.3基准测试方法
基准测试的第一步是提出问题并明确目标。然后决定是采用标准的基准测试,还是设计专用的测试。设计专用的基准测试很复杂,需要有一个迭代的过程。首先,需要获得生产数据集的快照,并且该快照是很容易还原的,以便后续进行测试。然后,针对数据运行查询。可以建立一个单元测试集作为初步的测试,并运行多遍。更好的办法是选择一个有代表性的时间段,比如高峰期的一个小时,或者一整天,记录生产上的所有查询。如果时间段比较小,可以选择多个时间段,这样有助于覆盖整个系统的活动状态。
基准测试的时间应该运行足够长,这一点很重要。有时候无法确认测试