[读书笔记]High Performance MySQL–第三章

Chapter 3. Benchmarking

你需要一个好的性能测试框架来判断配置,查询和服务器之间的不同。

3.1 The Importance of Benchmarking

重要性毋需多讲,地球人都知道。

3.2 Benchmarking Strategies

首先要区分开性能测试和压力测试,虽然他们用的工具基本相同,但目的却是不一样地。性能测试主要用来比较两种选择。压力测试用来找出极限。

为了使benchmarking做到客观不受干扰,下面有一些建议:

Change one thing at a time

Test iteratively

测试的时候,调整某些参数是幅度不要太大。例如调整MySQL的缓存时,你的目的找出一个最小的值来满足你的负载。调整时最好以50%或100%的幅度来增减,这样最容易找出合适的大小来。

Always repeat tests

建议单项测试最少不能低于四次。做完一次测试后,最好重起MySQL或者服务器,以免后面测试受到上次测试缓存的影响。

Use real data

Don’t use too many clients

不要使测试走向疯狂,这里有一个简单的方法来找出一个合适的并发数目。开始使用不太多的并发,例如20,进行测试。然后双倍这个数目,再进行测试。继续双倍,直到性能不再增加为止。

Separate the clients from the server

3.3 Benchmarking Tools

本届介绍了三个测试工具:The MySQL Benchmark Suite、MySQL super-smack、MyBench。除了第一个为性能测试工具,其他两个都为压力测试工具。

3.3.1 The MySQL Benchmark Suite

这个测试工具是随着MySQL绑定发行的,基于Perl语言和其中的两个模块:DBI和Benchmark。如果有需要,它支持所有支持DBI驱动的数据库。可以通过修改bench-init.pl的选项以符合需要。另外提醒的是,它不支持多CPU。

进行测试时,执行run-all-tests脚本,具体的命令选项请看README。

3.3.2 MySQL super-smack

这是一个强大的广受赞誉的压力测试工具,支持MySQL和PostgreSQL。

http://jeremy.zawodny.com/mysql/super-smack/

安装很简单,请先仔细阅读目录里的指导文件。

3.3.2.1 Preparing test data

做测试时,最好用自己的数据。因为使用真实的数据,使测试变得接近现实和客观。

3.3.2.2 Configuration

这里介绍了smack的文件设置,看起来很简单。

3.3.3 MyBench: A Home-Grown Solution

MyBench一种基于Perl语言易于扩展的测试工具。

http://jeremy.zawodny.com/mysql/mybench/

Post a Comment