2012年7月4日水曜日

tpcc-mysqlのコンパイル~計測 手順メモ

必要なパッケージ(yumで依存関係を追ってインストールされる奴は除く)


・MySQL-server(CentOSのリポジトリ使うなら、mysql-server)
・MySQL-devel(CentOSのリポジトリ使うなら、mysql-devel)
・MySQL-shred(CentOSのリポジトリ使うなら、mysql-libs)
・bzr
・make
・gcc

MySQL-serverが入ってない状態だと、
コンパイルは出来たけど実行しようとするとSegmentation Faultした。



ソースの入手&コンパイル

$ bzr branch lp:~percona-dev/perconatools/tpcc-mysql
カレントディレクトリのにtpcc-mysqlディレクトリを持ってきてくれる。

$ cd tpcc-mysql/src
$ make
パッケージが全部揃っていればmake一発で済むはず。

$ cd ../ ; ls -l
tpcc_loadがデータのロード用、tpcc_startが計測用のバイナリ。
makeがエラーになってなければあるはず。



データのロード

$ mysqladmin create [DB]
別に名前は何でも良いのでデータ用のDBを作成する。
tpcc_startのデフォルトDB名がtpccなので、それにしておくと後で指定しなくて良い。

$ mysql [DB] < create_table.sql
テーブル定義を読み込む。

$ ./tpcc_load [server] [DB] [user] [pass] [warehouse]
./tpcc_load localhost tpcc root "" 100 みたいな。

大体、warehouse * 500,000行、warehouse * 80メガバイトくらいの容量。
 ⇒http://yoku0825.blogspot.jp/2012/06/tpcc-mysqltpcemysql.html

$ mysql [DB] < add_fkey_idx.sql
どっちかというとtpcc_loadよりこっちの処理のが重い。
tpcc_loadより先にこっちをやっちゃうのも可能。
後でINDEX作った方がまだ速いのかなと思うけれども、
DBT-3でやった時に先にINDEX作った方が速いという記事もあった。
いつか試そうと思ってるけどまだ試してない。。


ここでコールドバックアップを取っておく。
tpcc_startをかけるとレコードがINSERT/UPDATE/DELETEされるので、
同じ(ような)条件で計るにはまたtpcc_loadするかリストアするしかない。
mysqldumpだとリストアに時間がかかってしょうがいないのでコールドバックアップ推奨。



$ ./tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -c connections -r warmup_time -l running_time -i report_interval -f report_file
色々オプションが付けられるけれどなんとなく心で感じて下さい。

あとは計測が終わるのを待つのみ。
複数回計るならリストアしてtpcc_start。
お疲れ様でした。


【2013/05/09 12:06】
CentOSリポジトリのパッケージ名間違えていたぽい。。orz
ところで、MySQL-Serverが入ってないとSegfaultするのはmroongaでもあったこの辺りが関係あるのかなぁ?
http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-May/001358.html

調べる気はない。。

0 件のコメント :

コメントを投稿