Open Source Web Development Tutorials - Dev Shed
使える!MySQLのベンチマークツール
(2009/01/19公開)
SysBenchそのほか
お察しのとおり、上に挙げたユーティリティーすべてについて特徴と機能を詳細にとり上げることはできない。スペースの許す範囲で、それぞれの長所と短所を提示し、使用方法の指針を示すまでだ。どんなツールがあるか、それぞれにどんな機能があるかを押さえておけば、いつどれを使うか、また使用説明書と資料をどこで入手できるかが分かるだろう。
3つ目のユーティリティーはSysBenchだ。このベンチマークユーティリティーは、データベースに高負荷が掛かっているときのOS関連パラメータを測定する。クロスプラットホーム型かつマルチスレッドで、モジュール式のツールだ。MySQLを念頭において設計された。現行の機能では次の項目を評価できる:入出力パフォーマンス、スケジューラパフォーマンス、メモリ割り当ておよび転送速度、POSIXスレッド実装パフォーマンス、データベースサーバーパフォーマンス(OLTP)など。
このユーティリティーもマニュアルできちんと解説されている。もっと詳しくは、SysBench manualをお読みいただきたい。使い方は簡単だ。さまざまなテストモード、cpu、threads、mutex、memory、fileio、oltpが用意されており、それぞれコマンドラインパラメータで実行できる。InnoDB型のデータベース上でOLTPテストを実行する例を見てみよう。SysBenchの利点はそのシンプルさだ。なのに、いい仕事をしてくれる。
sysbench --test=oltp --mysql-table-type=innodb --oltp-table-size=1000000 --mysql-socket=/tmp/mysql.sock prepare
sysbench --num-threads=16 --max-requests=100000 --test=oltp --oltp-table-size=1000000 --mysql-socket=/tmp/mysql.sock --oltp-read-only run
それから、Jeremy Zawodny氏によるPerlスクリプトmybenchがある。同氏は、High Performance MySQLという書籍の著者の1人だ。その第3章では同スクリプトが詳しく解説されている。Perlモジュールとスクリプトで作成されている。bench_exampleと呼ばれ、ユーザーによるカスタマイズを必要とする。このスクリプトの利点もシンプルさで、使い方は至って簡単だ。
必要な作業といえば、同ベンチマークツールがシミュレートすべきユーザークライアントの数(-n)と各クライアントが実行すべき反復回数(-h)を指定するだけだ。同氏自身、このスクリプトのマイナス面はクライアントサイドで少々重いことだと説明している。ボトルネックを緩和するには、同じSQLサーバーから実行しないことだ。
MySQLに内蔵されたbenchmark()関数にも触れておく必要があるだろう。この関数はクライアントエンドでの経過時間を測定する。スカラー式しか使えないため、1行または1列しか返すことができないのは大きな難点だ。遊びならまだしも、実用性の点ではほかのツールに劣るといえる。
SELECT BENCHMARK(50000, SHA1(MD5(rand())));
ここまではMySQLデータベース専用のベンチマークツールを見てきた。ここからは複雑かつ高度なアプリケーションをいくつかご紹介しよう。少しの知識と慣れが必要だが、いずれも非常に強力なツールだ。Apache JMeterはその筆頭だ。同ツールでは、高負荷を作り出し、さまざまなサーバーの異なる振る舞いをシミュレートすることができる。
JMeterは拡張性が高く、そのため非常に優れた説明書が付属している。マルチスレッドをサポートし、100%クロスプラットホーム(Javaベース)であり、Web、SOAP、Database(JDBC経由)、LDAP、JMS、Mail(POP3)などさまざまなサーバーに対して負荷を追加したりテストしたりできるよう設計されている。付属のManual、Wiki、FAQページを必ずお読みいただきたい。また、さまざまな結果書き出し機能(グラフ、テーブルなど)を備えている。
JMeterは間違いなく高度なツールだ。技術的には、あらゆる種類のサーバーのパフォーマンスをロードし測定する機能を備えている。ただ、それがゆえに読者は独自のテストや計画を作成する必要がある。少数のパラメータしかないコマンドラインツールをそのまま実行したり、既製のスクリプトを修正したりするのと比べると、うまく使いこなすのが難しいツールだ。だが、ひとたびJMeterのコンセプトをマスターしたら、その柔軟性は非常に有用だ。また、動作性は極めて優れている。
とり上げるに値するもう1つのアプリケーションはTPC-Cだ。これはオンライントランザクション処理(OLTP)ベンチマークだ。詳しく調べたい読者には、公式説明書をご覧になることをぜひお勧めする。同ツールの複雑性は読者の想像をはるかに超えており、精通しているのはごく一握りの専門家だけだ。だが、少なくともわれわれはこのツールの存在を知っているし、必要であれば時間を投資して利用法を研究し理解することができる。非常に強力なツールだ。
最後に、SQLBusterを挙げておきたい。ほとんど知られていないツールだ。お試しあれ!
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








