誰もが,データベースができるだけ高速で動くことを望む。そのために様々なテクニックを駆使してチューニングを試みる。

 チューニングの結果を確認するには,何かしらの指標が必要となる。「体感的に向上した」というのは,まったく当てにならない。正確に性能を把握してこそ,効率的なチューニングが行えるのだ。今回は,ベンチマークについて紹介する。

MySQLのベンチマーク方法

 ベンチマークには,2つの方向性がある。一つ目は,決まった処理を通じて,MySQLサーバーの処理速度を計測するものだ。これは,手順が決まっているため,それほど準備は必要ない。また,常に同じ処理を行うので,MySQLサーバーの基本的な処理能力を測るのに適している。

 2つ目は,作成したデータベースの処理スピードを計測するものだ。一つ目も重要であるが,結局は,作成したデータベースが高速で動作するかが重要である。さらに,同時アクセス数やデータ量による処理時間の変化も重要なファクターでる。

MySQLのベンチマーク機能

 MySQLそのものは,ベンチマーク機能が優れているとは言えない。データベースに対する実際の処理を行い,時間を計測するスクリプトを持っているが,参考程度と考えた方がいい。

 www.mysql.comのダウンロードページからインストールパッケージMAXをダウンロードしてインストールすると,インストールディレクトリ内にsql-benchディレクトリが生成される。sql-benchディレクトリには,様々なシチュエーションのテスト用スクリプト(Perl)が用意されている。これらを実行することによって,インストールしたMySQLサーバーの処理能力を計測することができる。

リスト1●sql-benchディレクトリ内のスクリプト

[root@localhost sql-bench]# ls
ChangeLog             graph-compare-results  test-ATIS
Comments              innotest1              test-alter-table
Data                  innotest1a             test-big-tables
README                innotest1b             test-connect
TODO                  innotest2              test-create
bench-count-distinct  innotest2a             test-insert
bench-init.pl         innotest2b             test-select
compare-results       limits                 test-transactions
copy-db               run-all-tests          test-wisconsin
crash-me              server-cfg

 MySQLのベンチマークの定番としては,MySQL AB の元社員が開発したsuper-smackがある。super-smackは,非常に優秀なベンチマークテストツールである。しかし,カスタマイズしづらいという欠点がある。

 カスタマイズし易いベンチマークツールとしてMyBenchがある。