日本ヒューレット・パッカード株式会社
本文書ではDBT-3 version 1.9のMySQL移植版を利用したMySQLの評価手順を説明する。
本評価手順では以下のソフトウェアを利用している。
| OS | Red Hat Eneterprise Linux AS 4 Update 3 |
|---|---|
| データベース | MySQL 5.0.26 Community Server 32bitOSの場合はmysql-standard-5.0.26-x86-glibc23.tar.gzを利用 64bitOSの場合はmysql-standard-5.0.26-x86_64-glibc23.tar.gzを利用 |
| DBT-3 | version 1.9 MySQL移植版(1.9.ipa.mysql.01.00) |
DBT-3 version 1.9 MySQL移植版(1.9.ipa.mysql.01.00)の詳細については以下を参照すること。
MySQLやDBT-3のインストールおよびデータベースのディレクトリパスやファイルパスは、 実際のテスト環境に応じて異なる可能性がある。 このため本文書では、以下の変数を利用する。
| 変数名 | 説明 |
|---|---|
| $DBT3_HOME | DBT-3を展開したトップディレクトリ。 OSDL DBT-3 v1.9を利用する場合、アーカイブを展開すると dbt3-1.9 というディレクトリが生成される。 DBT3_HOME はそのディレクトリまでの完全パスを保持する。 例えば /home/mysql ディレクトリ下に展開した場合は /home/mysql/dbt3-1.9 となる。 |
| $DSS_PATH | データベースに投入するテスト対象データとなるCSVデータファイルの生成・配置場所。 $DBT3_HOME/scripts/dbt3_profile 内に定義される。 スケールファクタ(SF)に応じて巨大なCSVデータファイルを生成するため、ディスク容量に注意する必要がある。 デフォルトでは /mnt/data になっている。 |
| $MYSQL_DATA | MySQLのデータベースファイルを配置するディレクトリ。 $DBT3_HOME/scripts/mysql/mysql_profile 内で定義される。 SF=1で約4GBのディスクスペースを必要とする。 $MYSQL_DATA を変更した場合、MySQLの設定ファイル(my.cnf)も修正する必要がある。 デフォルトは /mnt/data/mysql/data になっている。 |
| $MYSQL_CONFIG | MySQLの設定ファイルの完全パス名。 $DBT3_HOME/scripts/mysql/mysql_profile 内で定義される。 デフォルトは /mnt/data/mysql/my.cnf である。 |
インストール時にはすべてのパッケージのインストールを選択している。 既存環境での試験を行う場合、以下のRPMパッケージがインストールされていることを確認すること。 インストールされていない場合は、インストールメディア等からインストールすること。
確認例を以下に示す。
# rpm -q sysstat パッケージ sysstat はインストールされていません。
DBT-3の実施および MySQL の実行ユーザをシステムに追加する。 また DBT-3 は実行中に sudo を利用するため /etc/sudoers にユーザを追加する必要がある。 パスワードなしで sudo 実行可能とするため、セキュリティに留意する。
# su - # useradd mysql # vi /etc/sudoers ... root ALL=(ALL) ALL mysql ALL=(ALL) NOPASSWD: ALL ← 追加 ...
MySQL 5.0系の最新のバイナリを MySQL AB Webサイトから取得する。
本手順書では non RPM 版のバイナリ用いる。利用環境に適合した適切なバイナリを選択して取得する。 以下では Linux (non RPM) の x86 版 (glibc-2.3)を入手した場合の手順を示す。 その他のバイナリの場合はアーカイブ名を読み替える。
# cd /usr/local # tar xvfz /tmp/mysql-standard-5.0.26-linux-i686-glibc23.tar.gz # chown -R mysql mysql-standard-5.0.26-linux-i686-glibc23 # ln -s mysql-standard-5.0.26-linux-i686-glibc23 mysql
OSDL DBT-3 version 1.9を以下のサイトから入手する。
また IPA Webサイトより以下のパッチを取得する。
mysql ユーザアカウントで以下を実施する。 以下に、取得した DBT-3 およびパッチが /tmp 下にあると仮定してたインストール手順を示す。 インストール先となる DBT3_HOME は /home/mysql/dbt3-1.9 とする。
# su - mysql $ whoami mysql $ cd /home/mysql $ tar xvfz /tmp/dbt3-1.9.tar.gz $ cd dbt3-1.9 $ gzip -dc /tmp/dbt3-1.9-20060329.patch.gz | patch -p1 ... $ gzip -dc /tmp/dbt3-1.9.ipa.mysql.01.00.patch.gz | patch -p1 ... $ aclocal $ autoreconf --install $ ./configure --with-mysql=/usr/local/mysql
注意: aclocal および autoeconf 実施時に下記のような警告が出力される場合がある。 この警告は aclocal の意図された動作であり、無視することができる。
$ aclocal /usr/share/aclocal/libgcrypt.m4:23: warning: underquoted definition of AM_PATH_LIBGCRYPT run info '(automake)Extending aclocal' or see http://sources.redhat.com/automake/automake.html#Extending-aclocal /usr/share/aclocal/ao.m4:9: warning: underquoted definition of XIPH_PATH_AO $ autoreconf --install /usr/share/aclocal/libgcrypt.m4:23: warning: underquoted definition of AM_PATH_LIBGCRYPT run info '(automake)Extending aclocal' or see http://sources.redhat.com/automake/automake.html#Extending-aclocal /usr/share/aclocal/ao.m4:9: warning: underquoted definition of XIPH_PATH_AO
$DBT3_HOME/src/dbgen/Makefile の先頭行近くの DATABASE 変数を確認する。
# @(#)makefile.suite 2.1.8.1 # Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata) # SQLSERVER, SYBASE, PGSQL (PostgreSQL) # Current values for MACHINE are: ATT, DOS, HP, IBM, ICL, MVS, # SGI, SUN, U2200, VMS # Current values for WORKLOAD are: TPCH, TPCR DATABASE=MYSQL ← MYSQLとなっていること MACHINE =HP WORKLOAD =TPCH ...
DBT-3で利用するプログラムを以下の手順でコンパイルする。
$ cd $DBT3_HOME $ make $ make -C src/dbgen
DBT-3で利用する各プロファイルおよびMySQL設定ファイルを編集する。
... DATABASE=mysql ← mysqlであることを確認 export DSS_QUERY="/home/mysql/dbt3-1.9/queries/mysql" export DSS_PATH="/mnt/data/data" ← テスト対象データのCSVデータファイル生成ディレクトリ ...
# Database name export SID=dbt3 # MySQL Setting file # If you want to use your custome my.cnf, copy it as $MYSQL_CONFIG before begining the test. export MYSQL_CONFIG=/mnt/data/mysql/my.cnf ← MySQL設定ファイルパス # "mysql" command's option. export MYSQL_OPTS="-u root -v -t" ← クエリ実施時のmysqlコマンドオプション # MySQL's Database Directory export MYSQL_DATA=/mnt/data/mysql/data ← データベースディレクトリ
既存データベースを利用して DBT-3 を実施する場合、データベースの準備は不要である。 $DBT3_HOME/scripts/mysql/mysql_profile の $MYSQL_DATA および $MYSQL_CONFIG を適切に編集し、 既存データベースを利用可能にすること。
新規データベースを作成する場合は以下を実施する。
$ su - # mkdir -p $DSS_DATA # chown -R mysql $DSS_DATA # mkdir -p `dirname $MYSQL_CONFIG` # chown -R mysql `dirname $MYSQL_CONFIG` # rm -rf $MYSQL_DATA ← 注意: 新規作成時のみ実施すること
DBT-3は、$DBT3_HOME/scripts/run_workload.sh を用いて実施する。
実施前にカレントディレクトリを $DBT3_HOME/scripts にすること。
$ echo 1 > $DBT3_HOME/scripts/run_number
$ cd $DBT3_HOME/scripts $ ./run_workload.sh -R DBT3.20061101-01 -g -f 1 -n 1 -s 92600125 > workload.log 2>&1 & $ tail -f workload.log
run_workload.shに指定できるオプションを以下の2つの表に示す。
| オプション名 | 説明 |
|---|---|
| -f sf | スケールファクタ指定。 データベース用に sf × 3GB とテスト対象データのCSVデータファイルに sf × 1GB のディスク領域が必要である。 |
| -n stream | ストリーム数(スループットの多重度)指定。Throughputテスト実施時に起動されるクライアントの数。 |
| -s seed | シード指定。PowerテストおよびThroughputテスト時のクエリのパラメータ作成時の乱数の初期値として使用。 |
| -p param | Loadテスト用データベース起動パラメータ指定。データベース起動プロセスに引数として渡される。 |
| -q param | Powerテスト用データベース起動パラメータ指定。データベース起動プロセスに引数として渡される。 |
| -r param | Throughputテスト用データベース起動パラメータ指定。データベース起動プロセスに引数として渡される。 |
| -e | EXPLAIN のかわりに EXPLAIN ANALYZE の実施を指定 (PostgreSQL専用)。 |
| -g | テスト対象データ生成指定。テーブル毎にCSVデータファイルを生成する。 |
| -o | OProfileによるプロファイル実施指定。 |
| -t | Tableスペース利用指定 (PostgreSQL専用)。 |
| -u | Tableスペース利用指定 (PostgreSQL専用)。 |
| -v | Verbose指定。 |
| オプション名 | 説明 |
|---|---|
| -R test_id | テストID指定。 |
| -x | データベース統計情報収集指定。以下のディレクトリにデータベース統計情報が記録される。
|
| -j | PowerテストとThroughputテストでEXPLAINを実施しない。 |
| -P | Throughputテストを実施しない。 |
| -m | MyISAM利用指定 (MySQL専用)。partおよびsupplierテーブルのエンジンに MyISAM を利用する。 |
| -i | VARCHARデータ型のカラムをCHARデータ型にする。 |
| -I filename | INDEX追加用シェルスクリプト指定。Loadテストで、INDEX追加処理後に実施するシェルスクリプトのファイル名を指定する。 |
DBT-3の実施完了するとレポートが $DBT3_HOME/scripts/output/<テストID> ディレクトリに生成される。 ディレクトリ内に index.html が存在し、Webブラウザを利用することで結果を参照できる。
DBT-3で利用したデータベースの起動および停止を行いたい場合、以下のシェルスクリプトが利用できる。
MySQL版のDBT-3をPostgreSQLで実施するための注意点を示す。 下記項目以外については DBT-3 1.9によるPostgreSQLの評価手順 を参照すること。
(/usr/local/pgsql に PostgreSQL がインストールされていると仮定する) $ PATH=/usr/local/pgsql/bin:$PATH $ cd $DBT3_HOME $ ./configure --with-postgresql
... DATABASE=PGSQL ← PGSQLに修正する MACHINE =HP WORKLOAD =TPCH ...
... TPC-H Population Generator (Version 1.3.0) Copyright Transaction Processing Performance Council 1994 - 2000
$ cd $MYSQL_DATA $ tail ホスト名.err ... 060911 15:23:17 InnoDB: Started; log sequence number 0 0 060911 15:23:17 [Note] /usr/local/mysql/bin/mysqld: ready for connections. Version: '5.0.26-standard-log' socket: '/mnt/data/mysql/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)
$ $DBT3_HOME/scripts/stop_sysstats.sh [some_where_directory/] ← ディレクトリ指定は任意