そろばんのしょ(第3版第2刷)

雑魚い見習いDBAの日々学んだことや、どーでもいいことを。基本は自分の備忘録。

tpcc-mysqlをインストールしてみた

tpcc-mysqlのインストール備忘録。 個人環境にクエリをかけながら検証をしたかったので元隣の隣の人に相談した所、tpcc-mysqlというベンチマークツールを教えてもらったのでインストールしてみた。 mysqlyumでいれてないためところどころ詰まったので一緒にメモっておく

GitHub - Percona-Lab/tpcc-mysql

$ git clone https://github.com/Percona-Lab/tpcc-mysql.git
$ cd src
$ vim Makefile

###
mysql_configのパスをフルパスに書き直した。
LIBS=       `/usr/local/mysql5718/bin/mysql_config --libs_r` -lrt

INC=        -I. `/usr/local/mysql5718/bin/mysql_config --include`
###

$ cd src ; make
##  databaseの作成。例に習って`tpcc1000`とする
MYSQL_PWD="mysql_pass" /usr/local/mysql5718/bin/mysqladmin --defaults-file=<my.cnfのパス> -uroot create tpcc1000

##  CREATE TABLE文の流し込み。
$ mysql -u root -p tpcc1000 < /data/tpcc-mysql.git/create_table.sql

## データ挿入!とおもったらコケた。。。
$ ./tpcc_load -h127.0.0.1 -d tpcc1000 -u root -p "mysql_pass" -w 1000
./tpcc_load: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

## シンボリックリンク貼り直し
$ ln -s /usr/local/mysql5718/lib/libmysqlclient.so /usr/lib64/libmysqlclient.so.20

$ ./tpcc_load -hlocalhost -d tpcc1000 -u root -p "mysql_pass" -w 1000
*************************************
*** TPCC-mysql Data Loader        ***
*************************************
option h with value 'localhost'
option d with value 'tpcc1000'
option u with value 'root'
option p with value 'mysql_pass'
option w with value '1000'
<Parameters>
     [server]: localhost
     [port]: 3306
     [DBname]: tpcc1000
       [user]: root
       [pass]: mysql_pass
  [warehouse]: 1000

2002, HY000, Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

## `/tmp/mysql.sock`を見に行ってしまうらしい。シンボリックリンクで凌ぐ
$ ln -s <my.cnfに設定しているパス>/mysql.sock /tmp/mysql.sock

## 通った。
$ ./tpcc_load -hlocalhost -d tpcc1000 -u root -p "mysql_pass" -w 1000
*************************************
*** TPCC-mysql Data Loader        ***
*************************************
option h with value 'localhost'
option d with value 'tpcc1000'
option u with value 'root'
option p with value 'mysql_pass'
option w with value '1000'
<Parameters>
     [server]: localhost
     [port]: 3306
     [DBname]: tpcc1000
       [user]: root
       [pass]: mysql_pass
  [warehouse]: 1000
TPCC Data Load Started...
Loading Item
.................................................. 5000
.................................................. 10000
.................................................. 15000
.................................................. 20000
.................................................. 25000
.................................................. 30000
.................................................. 35000
.................................................. 40000

...

実行。

./tpcc_start -h 127.0.0.1 -P 3306 -d tpcc1000 -u root -p mysql_pass -w 1000 -c 32 -r 10 -l 1000

実行中にInnoTopを見たところ下記みたいな感じ。ちゃんと32接続来てる。

When   Load  Cxns  QPS     Slow  Se/In/Up/De%  QCacheHit  KCacheHit  BpsIn    BpsOut
Now    0.00    34   3.14k     0  59/15/20/ 1       0.00%    100.00%  129.85k  942.15k
Total  0.00   151  10.14      0  59/15/20/ 1       0.00%     77.27%  424.62     3.14k

Cmd      ID      State               User   Host       DB      Time   Query
When   Load  Cxns  QPS     Slow  Se/In/Up/De%  QCacheHit  KCacheHit  BpsIn    BpsOut
Now    0.00    34   3.14k     0  59/15/20/ 1       0.00%    100.00%  129.85k  942.15k
Total  0.00   151  10.14      0  59/15/20/ 1       0.00%     77.27%  424.62     3.14k

Cmd      ID      State               User   Host       DB      Time   Query
Execute     270  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     271  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     272  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     273  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     276  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     277  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     278  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     279  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     280  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     281  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     284  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     285  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     286  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y1
Execute     289  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     291  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     293  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     294  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     295  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     296  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     297  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     298  Creating sort inde  root   127.0.0.1  tpcc1000   00:01  SELECT c_id FROM custo
Execute     300  updating            root   127.0.0.1  tpcc1000   00:01  UPDATE warehouse SET w_y
Execute     269  updating            root   127.0.0.1  tpcc1000   00:00  UPDATE warehouse SET w_y
Execute     274  Sending to client   root   127.0.0.1  tpcc1000   00:00  SELECT s_quantity, s_data
Execute     275  updating            root   127.0.0.1  tpcc1000   00:00  UPDATE warehouse SET w_y
Execute     282  updating            root   127.0.0.1  tpcc1000   00:00  UPDATE warehouse SET w_y
Execute     283  Creating sort inde  root   127.0.0.1  tpcc1000   00:00  SELECT c_id FROM custo
Execute     287  updating            root   127.0.0.1  tpcc1000   00:00  UPDATE district SET d_ytd = 
Execute     288  updating            root   127.0.0.1  tpcc1000   00:00  UPDATE order_line SET ol_d
Execute     290  closing tables      root   127.0.0.1  tpcc1000   00:00  UPDATE stock SET s_quant
Execute     292  closing tables      root   127.0.0.1  tpcc1000   00:00  SELECT count(*) FROM stoc
Execute     299  updating            root   127.0.0.1  tpcc1000   00:00  UPDATE warehouse SET w_y

ただ、途中でサーバーの容量がいっぱいいっぱいになってしまったので最後まで実行完了できなかった。