このエントリーをはてなブックマークに追加このエントリをつぶやく

MySQLをHDD/RAID0/SSD/RAMDISKの上で走らせてみる(その3)

■■■■■ ソフトウェア準備およびベンチマーク実行 ■■■■■
サーバマシンにMySQL、ベンチマークマシンにtpcc-mysql benchmarkをインストールします。

■MySQLインストール
その1でも書いたように、厳密にやるつもりはなく、速度の傾向が知れればいいと思っています。innodbに与えるバッファサイズ、Read/Writeに使用するスレッド数を指定するだけでもかなりベンチマークの値が変わることが確認できましたが、今回比較する際に使用したMySQLはチューニングなしの物を使用します。ただ、今回のテスト向けにインストーラーで設定できる範囲で設定を変更します。

  1. ダウンロード
  2. Oracle社の配布サイトからWindows (x86,64-bit),MSI Installer Essentials版の(5.1.56)をダウンロードします。

  3. インストール
  4. インストールは基本的にウィザードに従って進めましたが、以下の箇所は変更しました。

    MySQLインストール
    サーバ種別を開発機からサーバ用途に変更します。
    MySQLインストール
    使用できるデータベースへのコネクション数を増やします。
    MySQLインストール
    今回のテストではあまり意味が無いのですが、データベースの使用言語をUTF8に設定します。
    MySQLインストール
    MySQLが使用するポートをファイアウォールの対象外に設定します。
    あとはデータファイルを指定するところで、テストによってドライブを変更しました。

  5. tcpp-mysqlを使用するための設定
  6. データベースの作成、およびユーザの作成を行います。ここでは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を素のままインストールしました。パッケージの選択で開発環境を追加したくらいです。

  1. bazaarインストール
  2. 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

  3. tpcc-mysqlのソースの取得およびコンパイル
  4. 次に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が作成されました。

■ベンチマークの実行
最後にベンチマークを実行します。

  1. 負荷テスト用のデータベースの準備
  2. 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

  3. 初期データの作成を行う
  4. 以下のコマンドを実行して初期データの作成を行います。引数は[ホスト名] [DB名] [DBユーザ名] [DBパスワード名] [倉庫数]となります。倉庫数が1増加するごとに95Mバイトほど、innodbのデータのファイルサイズが増加します。今回はRAMDISKが4Gなので、それに合わせて倉庫30個分のデータを作成しました。

    [jotaro@golf tpcc-mysql]$ ./tpcc_load hawk tpccdb tpcc tpccpassword 30

    今回は倉庫数を30としましたので、2.8G程度のデータファイルが作成されました。

  5. テスト開始
  6. 最後にテスト開始です。引数は[ホスト名] [DB名] [DBユーザ名] [DBパスワード名] [倉庫数] [接続数] [準備時間] [実行時間]になります。

    [jotaro@golf tpcc-mysql]$ ./tpcc_start hawk tpccdb tpcc tpccpassword 30 1 30 200

    倉庫数を増やすことで、テスト対象のデータを増やすことができます。また、接続数を変えることで、同時接続する数を増やすことができます。準備期間はテストを開始するまでの暖機運転時間(秒)です。そして最後が実行時間(秒)になります。
    今回は30個の倉庫は固定で、接続数を1~51個まで5個ずつ増やし、低負荷時から高負荷時の間に、デバイスによってどういう変化を見せるかチェックしたいと思います。

    その4:ベンチマーク結果編

Jotaro Inoue の紹介

代表取締役社長
カテゴリー: プログラミング   パーマリンク

MySQLをHDD/RAID0/SSD/RAMDISKの上で走らせてみる(その3) への1件のコメント

  1. ピンバック: MySQLをHDD/RAID0/SSD/RAMDISKの上で走らせてみる(その2) | SpiriteK Blog