■■■■■ ソフトウェア準備およびベンチマーク実行 ■■■■■
サーバマシンにMySQL、ベンチマークマシンにtpcc-mysql benchmarkをインストールします。
■MySQLインストール
その1でも書いたように、厳密にやるつもりはなく、速度の傾向が知れればいいと思っています。innodbに与えるバッファサイズ、Read/Writeに使用するスレッド数を指定するだけでもかなりベンチマークの値が変わることが確認できましたが、今回比較する際に使用したMySQLはチューニングなしの物を使用します。ただ、今回のテスト向けにインストーラーで設定できる範囲で設定を変更します。
- ダウンロード
- インストール
- tcpp-mysqlを使用するための設定
Oracle社の配布サイトからWindows (x86,64-bit),MSI Installer Essentials版の(5.1.56)をダウンロードします。
インストールは基本的にウィザードに従って進めましたが、以下の箇所は変更しました。
サーバ種別を開発機からサーバ用途に変更します。
使用できるデータベースへのコネクション数を増やします。
今回のテストではあまり意味が無いのですが、データベースの使用言語をUTF8に設定します。
MySQLが使用するポートをファイアウォールの対象外に設定します。
あとはデータファイルを指定するところで、テストによってドライブを変更しました。
データベースの作成、およびユーザの作成を行います。ここではDB名”tpccdb”、ユーザ名”tpcc”、パスワード”tpccpassword”として進めたいと思います。
C:\>mysql -u root -p
mysql> create database tpccdb;
mysql> grant all privileges on tpccdb.* to tpcc@'%' identified by 'tpccpassword';
mysql> exit;
以上です。ほら、簡単でしょう?
■tpcc-mysql benchmarkのインストール
OSはCentOS5.5を素のままインストールしました。パッケージの選択で開発環境を追加したくらいです。
- bazaarインストール
- tpcc-mysqlのソースの取得およびコンパイル
tcpp-mysqlはBazaarという分散バージョン管理システムからソースを取得してコンパイルする必要があります。そのために、まずBazaarとついでにMySQLの開発用のパッケージをインストールします。
[jotaro@golf ~]$ su -
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# yum -y install bzr mysql-devel
次にBazaarを使用してソースの取得、およびコンパイルを行います。
[jotaro@golf ~]$ mkdir ~/bzr
[jotaro@golf ~]$ cd ~/bzr
[jotaro@golf bzr]$ bzr init
[jotaro@golf bzr]$ bzr branch lp:~percona-dev/perconatools/tpcc-mysql
[jotaro@golf bzr]$ cd tpcc-mysql/src
[jotaro@golf src]$ make all
これでテストデータを作成するためのtcpp-load、およびベンチマーク実行クライアントのtcpp-startが作成されました。
■ベンチマークの実行
最後にベンチマークを実行します。
- 負荷テスト用のデータベースの準備
- 初期データの作成を行う
- テスト開始
tcpp-mysqlが利用するテーブルや外部キー、インデックスなどの作成を行います。
[jotaro@golf src]$ cd ..
[jotaro@golf tpcc-mysql]$ mysql -u tpcc -p -h 192.168.83.3 tpccdb < create_table.sql
[jotaro@golf tpcc-mysql]$ mysql -u tpcc -p -h 192.168.83.3 tpccdb < add_fkey_idx.sql
以下のコマンドを実行して初期データの作成を行います。引数は[ホスト名] [DB名] [DBユーザ名] [DBパスワード名] [倉庫数]となります。倉庫数が1増加するごとに95Mバイトほど、innodbのデータのファイルサイズが増加します。今回はRAMDISKが4Gなので、それに合わせて倉庫30個分のデータを作成しました。
[jotaro@golf tpcc-mysql]$ ./tpcc_load hawk tpccdb tpcc tpccpassword 30
今回は倉庫数を30としましたので、2.8G程度のデータファイルが作成されました。
最後にテスト開始です。引数は[ホスト名] [DB名] [DBユーザ名] [DBパスワード名] [倉庫数] [接続数] [準備時間] [実行時間]になります。
[jotaro@golf tpcc-mysql]$ ./tpcc_start hawk tpccdb tpcc tpccpassword 30 1 30 200
倉庫数を増やすことで、テスト対象のデータを増やすことができます。また、接続数を変えることで、同時接続する数を増やすことができます。準備期間はテストを開始するまでの暖機運転時間(秒)です。そして最後が実行時間(秒)になります。
今回は30個の倉庫は固定で、接続数を1~51個まで5個ずつ増やし、低負荷時から高負荷時の間に、デバイスによってどういう変化を見せるかチェックしたいと思います。
ピンバック: MySQLをHDD/RAID0/SSD/RAMDISKの上で走らせてみる(その2) | SpiriteK Blog