第二章 MySQL基准测试
基准测试:是针对系统设计的一种压力测试。
2.1 为什么需要基准测试
基准测试可以观察系统中在不同压力下的行为。有很多用处的可测试点,详见书中。
2.2 基准测试的策略
略
2.2.1 测试何种指标
吞吐量:是指单位时间内事务的处理数。
响应时间或延迟:用于测试任务所需的整体时间。根据不同的时间单位可以计算所需的平均响应时间、最小响应时间、最大响应时间的所占百分比,或者将每次响应时间制作成频率分布图、折线图等图表进行分析。
并发性:数据库的并发性和web服务器的并发性有些差异,web服务器的并发性指的是可以一段时间内同时处理多少web请求,而数据库的并发性测试,主要关注于,当并发事务增加时,需要测试的吞吐量是否下降,响应时间是否变长。
可扩展性:指的是给系统增加一倍的工作,在理想情况下可以使吞吐量增加一倍;或者说给系统增加一倍的资源,就可以获得两倍的吞吐量。(这是最理想情况,现实中几乎达不到,即边际效益下降)
BENCHMARK(count, expr)函数:用于计算表达式expr共count次,可以用来计时MySQL处理表达式的速度。结果值为0,对于不适当的参数(例如NULL或负重复计数),则为NULL。因此SELECT的结果不重要,而是要看执行花费的时间。下面这个例子可以发现MD5算法比SHA1算法速度更快。
mysql> SELECT BENCHMARK(1000000, MD5('test'));
+---------------------------------+
| BENCHMARK(1000000, MD5('test')) |
+---------------------------------+
| 0 |
+---------------------------------+
1 row in set (0.14 sec)
mysql> SELECT BENCHMARK(1000000, SHA1('test'));
+----------------------------------+
| BENCHMARK(1000000, SHA1('test')) |
+----------------------------------+
| 0 |
+----------------------------------+
1 row in set (0.47 sec)
http_load:web服务器测试工具,略。
2.5 基准测试案例
略。有需要的可以参考书中的测试案例去做基准测试。