Last-modified: 2011-12-26 (月) 01:24:44
MySQL/シンプルなベンチマークを行いたい

概要

シンプルでいじりやすいベンチマークを行うため、MyBenchをインストールします。


今回は、MySQLが動いているサーバーとは異なるマシンにインストールします。
同一マシン上の場合でもとくに変更なく動くと思います。
その場合は@localhostのみ作成したほうがよいかもしれません。

方法

  1. MyBenchを取得し、解凍します。
    Everything is expanded.Everything is shortened.
      1
      2
    
     
     
    
    wget http://jeremy.zawodny.com/mysql/mybench/mybench-1.0.tar.gz
    tar -vxf mybench-1.0.tar.gz
  2. <解凍したディレクトリルート>/bench_exampleとMyBench.pmを「~/」へコピーします。
    Everything is expanded.Everything is shortened.
      1
      2
      3
    
     
     
     
    
    cp mybench-1.0/bench_example ~/mybench
    cp mybench-1.0/MyBench.pm ~/
    chmod 700 ~/mybench
  3. 「~/mybench」を編集します。
    Everything is expanded.Everything is shortened.
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
    
    -
    |
    !
    -
    !
    -
    !
    -
    !
     
    -
    !
     
    -
    |
    !
    
    # perlのパスが異なっていたので修正しました
    #!/usr/bin/perl -w
     
    # データーベース名
    my $db        = "mysql";
    # ユーザー名
    my $user      = "mybench";
    # パスワード
    my $pass      = "<パスワード>";
     
    # ホスト名(引数でも指定出来ますが、面倒なのでデフォルト値も環境に合わせておくと良いと思います)
    my $host      = $opt{h} || "<ホスト名>";
     
    # 実行するSQL(まだ何もデータが無い状態で試したので、動くことの確認程度のSQLです)
    # [?]部分に0~99,999の乱数が入ります
    my $sth = $dbh->prepare("SELECT * FROM help_topic WHERE help_topic_id = ?");
  4. MySQLにログインし、mybench用MySQLユーザーを作成します。
    Everything is expanded.Everything is shortened.
      1
      2
      3
      4
      5
      6
      7
    
    -
    |
    !
     
    -
    !
     
    
    -- SELECT権限のみで全DB,全テーブルにアクセス可能で、接続先はLANというユーザーを作成します
    -- 同じユーザーでlocalhost版も作成します
    GRANT SELECT ON *.* TO <ユーザー名>@<ホスト名>;
     
    -- 例. 
    GRANT SELECT ON *.* TO mybench@'192.168.50.%';
    GRANT SELECT ON *.* TO mybench@localhost;
  5. パスワードを設定します。
    Everything is expanded.Everything is shortened.
      1
      2
    
    -
    !
    
    -- 2つともパスワードを設定します
    SET PASSWORD FOR <ユーザー名>@<ホスト名>=PASSWORD('<パスワード>');
  6. 権限を再読み込みします。
    Everything is expanded.Everything is shortened.
      1
    
     
    
    FLUSH PRIVILEGES;
  7. 実行します。
    Everything is expanded.Everything is shortened.
      1
      2
      3
      4
      5
      6
      7
    
     
     
    -
    |
    |
    |
    !
    
    ./mybench
     
    # 引数渡し
    # n:クライアント数
    # r:実行回数(結果に表示されるqueriesは、n*rの回数)
    # h:ホスト名
    ./mybench -n 15 -r 200 -h "192.168.50.100"
  8. ベンチマークなので、複数回行って調査します。
    名前意味
    clientsクライアント数
    queries総クエリ数
    fastest最速クエリ処理時間
    slowest最遅クエリ処理時間
    average平均クエリ処理時間
    serial処理時間
    q/sec1秒あたりのクエリ処理数
  9. 不要データを削除します。
    Everything is expanded.Everything is shortened.
      1
      2
    
     
     
    
    rm -r ~/mybench-1.0
    rm ~/mybench-1.0.tar.gz

検証時の環境