1. ダウンロード
次のページからDBT-2をダウンロードしよう。http://osdldbt.sourceforge.net/
2. 補助パッケージのインストール
以下のperlパッケージ類はconfigureスクリプトでは「足りないよ」と言ってくれないので、自分でCPANなどを利用してインストールしよう。shell> sudo cpan Statistics::Descriptive shell> sudo cpan Test::Parser shell> sudo cpan Test::Reporter
3. コンパイル
何の変哲もなくconfigureおよびmake、make installを実行する。ただし--with-mysqlオプションは必須である。shell> ./configure --with-mysql=/usr/local/mysql [options] && make shell> sudo make install
4. データの生成とロード
データの生成とDBへのローディングは2ステップで行う。それぞれdatagenコマンドとbuild_db.shスクリプトを利用する。build_db.shスクリプトはソースコードのscriptsディレクトリ以下に含まれている。(その他の各種スクリプトもソースコードにそのまま含まれているよ!)shell> datagen -w 10 -d /var/tmp/dbt2 --mysql shell> scripts/mysql/build_db.sh \ -w 10 -d dbt2 -f /var/tmp/dbt2 -s /tmp/mysql.sock \ -h localhost -u user -p password -e INNODB
-wオプションは倉庫の数を指定する。倉庫が多ければ多いほど品数=データが増えるのだが、データがキャッシュに収まるかどうかでベンチマークの結果が大きく異なるので、測定したい部位によって-wオプションの値を変化させよう。(ディスクの速度を測定したければ倉庫の数は巨大にして、メモリの速度ならデータはメモリいっぱいいっぱいに収まるように、CPUならば小さめに)例えば-w 10の時は各テーブルのサイズは次のようになる。
mysql> select table_name,sum(data_length) from tables where table_schema='dbt2' -> group by table_name with rollup; +------------+------------------+ | table_name | sum(data_length) | +------------+------------------+ | customer | 200081408 | | district | 16384 | | history | 25755648 | | item | 11026432 | | new_order | 4702208 | | orders | 22626304 | | order_line | 314572800 | | stock | 381648896 | | warehouse | 16384 | | NULL | 960446464 | +------------+------------------+ 10 rows in set (0.54 sec)
5. ベンチマークの実行
ベンチマークそのものはrun_workload.shスクリプトで実行する。例えば次のように。shell> export USE_PGPOOL=0 shell> export LD_LIBRARY_PATH=/usr/local/mysql/lib shell> scripts/run_workload.sh -c 16 -d 600 -n -w 10 -s 10 -u user -x password
USE_PGPOOLという環境変数が設定されていないとエラーになってしまう。毎回指定するのが面倒ならスクリプト中に書いてしまってもいい。このコマンドによって、-dオプションで指定されている秒数だけベンチマークが実行され、結果がscripts/outputディレクトリに生成される。-nオプションは各スレッドが待ち時間なしでリクエストを送ることを意味するオプションで、データベースの性能の限界値を知りたい時には必須のオプションである。
各オプションの意味は次の通り。
- -c ... 同時実行スレッド数
- -d ... ベンチマーク期間
- -n ... 思考時間なし
- -w ... 倉庫の数
- -s ... スレッドを作成するまでの待ち時間(あまり意味なし。1でOK)
- -u ... MySQLユーザ名
- -x ... MySQLパスワード
- -l ... MySQL TCP/IPポート番号
- -H ... MySQLサーバホスト名
Can't use an undefined value as an ARRAY reference at /usr/local/share/perl/5.10.0/Test/Parser/Dbt2.pm line 521.
このエラーはTest/Parser/Dbt2.pmに問題があることを示すものではなく、ベンチマークが正常に行われなかったことを示す。例えばLD_LIBRARY_PATHの指定が間違っている時などに出るエラーであるので、まずはベンチマーク中にSHOW PROCESSLISTの出力などを見て、リクエストが正常に送られているかどうかを見てみよう。
実アプリケーションにおける性能値とはあまり関係ないのでDBT-2の結果にはさほど意味はないが、チューニングパラメータを変更した時などにどの程度性能が上がるか?ということを調べるにはこの手のベンチマークツールは有用である。もしDBT-2を使ったことがないなら、是非試して見よう!!
0 コメント:
コメントを投稿