mybench - simple benchmarking tool for MySQL

MySQLベンチマークを行いたい人って結構いると思うんです。私もそのうちの一人なんですけど、ベンチマークのためだけにCやらJAVAやらPerlRuby等を用いて1からゴリゴリ書くのはあまり賢い方法じゃないですよね。そこで、High Performance MySQLに紹介されているmybenchが便利です。

mybenchMySQL用に作られたベンチマークツール。他にもSuper SmackMySQL用のベンチマークツールとしてありますが、設定ファイルが難解であることに加えてC++言語で書かれているので、独自拡張が難しいです。mybenchはPerlで書かれていて、自分で簡単なPerlのプログラムを書くことでベンチマークを行うことができます。

mybenchの動作に必要なモジュールは

  • DBI
  • DBD::mysql
  • Time::HiRes
    の3つ。Perlを読める人ならサンプルを見ればどのように変更すれば良いのかすぐにわかります。ただ、Perlで書かれているからか、処理が比較的重くなってしまうので、MySQLが動作しているサーバで動かすのは避けたほうが良いでしょう。思わぬ結果が出ることを避けるために、ベンチマークを行う際はMySQLが動いているサーバではcronは止めておきましょうね。

    一応簡単にどのようにサンプルファイルを書き換えればいいかを説明しておくと

    my $db = "test";
    my $user = "test";
    my $pass = "";
    の部分を接続したいデータベースにあわせて書き換えます。
    my $sth = $dbh->prepare("SELECT * FROM mytable WHERE ID = ?");
    ここの部分を実行したいSQL文に変更。"?"は後で置き換えることのできる変数みたいなものです。
    $sth->execute($v);
    で指定している変数$vが先ほどの"?"に入ります。ですからこの部分にファイルからデータを読み込む処理を書き加えれば、自由にwhere節を制御することができます。これなら気軽にベンチマークが行えますね。便利便利。

    しかし、やっぱ時代はPerlなんですかねぇ。ちなみに、High Performance MySQL今月中に日本語訳がでるそうです。買ったばっかりなのになぁ。。。