teketeke_55の日記

技術メモとか

supersmackを使ったMysqlベンチマーク

supersmackはリモートでmysqlにログインしてテストデータに対して、~
同時接続数や試行回数を指定してSQLは発行して処理時間などを図ることのできるツール~
テストデータはパッケージに含まれているコマンドgen-dataで作成できる~

注意点

supersmack自体の負荷が結構高いのでベンチ対象とは違うサーバで実行しよう

インストール

 wget http://vegan.net/tony/supersmack/super-smack-1.3.tar.gz
 tar super-smack-1.3.tar.gz
 tar xvzf super-smack-1.3.tar.gz
 cd super-smack-1.3
 ./configure --with-mysql --prefix=$HOME --with-smacks-dir=$HOME/share --with-datadir=$HOME/var
 make
 make install

テストデータの作成

 gen-data -n 90000 -f %12-12s%n,%25-25s,%n,%d > /tmp/words.dat~

オプション

 -n データ行数を指定 
 -f データフォーマットを指定(カンマ区切り) 
 s 文字列(上記の場合、%12-12で12文字に制限、などの指定が可能) 
 d ランダムな整数値 
 n 1,2,3,…と単調増加する整数値 

中身はこんな感じのが90000行ある

 mhokdtjblikw89957,wqatcqwwrgtnlwksnekbncnrv,89957,1141375699
 ukjfhiyjdbac89958,xrirhtqtmexahmcueavbkgjro,89958,1002925258
 dtldvlwgfgbv89959,bpabrknthtuevfmhadpdxbjvo,89959,1748561933
 dtrgpuxrvqck89960,mkghqcpdlrgbwgeifstkmlqeg,89960,77060791
 wehbounveeav89961,jmpspnywxgprqffhjnygsikjd,89961,790607123

Mysqlの設定 [#h6aba7f9]

ベンチ対象でmysqlにてベンチマーク用のユーザを作成する

 >grant select,insert,update,delete on *.* to bench@[hostname] identified by 'passwd'; 

テスト用テーブルの作成

 >CREATE TABLE test.http_auth  (username char(255) not null primary key, pass char(25), uid integer, gid integer);  

テストデータをインポート

 >LOAD DATA LOCAL INFILE '/tmp/words.dat' INTO TABLE test.http_auth FIELDS TERMINATED BY ',';

※LOCALつけるのを忘れるとインポートできないことがあるので注意

supersmackの設定 [#k117ec5d]

supersmackの設定ファイルを修正する

 vim /root/share/select-key.smack 

実行するための修正点は以下のところ
ベンチ対象の情報を記載する。~

  4  user "bench";
  5  host "172.16.50.17";
  6  db "test";
  7  pass "passwd";
 
 64  user "bench"; // connect as this user
 65  pass "passwd"; // use this password
 66  host "172.16.50.17"; // connect to this host
 67  db "test"; // switch to this database

ベンチマーク実行

下記は設定した内容で同時接続数10、試行回数10でベンチを取っている

 # super-smack /root/share/select-key.smack2 10 10                                                   

実行結果は以下のように出る

 Query Barrel Report for client smacker1                                                                                    
 connect: max=7ms  min=1ms avg= 4ms from 10 clients                                                                         
 Query_type      num_queries     max_time        min_time        q_per_s                                                    
 select_index    200         42          0           286.40  

そのほか細かい設定はselect-key.smackファイルの以下のディレクティブで指定できる。

 12 // ensure the table exists and meets the conditions

 34 //define a dictionary

 47 //define a query

参考:http://www.thinkit.co.jp/cert/article/0707/2/2/2.htm