2008年10月10日金曜日

MySQL + TPC-H(1)

とりあえず進んだところまで.

TPC-H

ここで,データベースとクエリを作成するツールの利用が可能となりました.

その後のMySQLとの連携なのですが,先日先輩に教えていただいたページから,コレをダウンロードします.

README通りなのですが…以下やってみたことを.

1.データを作成.
shell> dbgen -s 10
→"*.tbl"というファイルが,8つ作成されます.
 sで指定する数はスケール.単位はGB.

/****追記(2008.10.19)
1.5.myisam_tpch_create_table.sqlの中身が間違っていたようなので書き換えが必要
TPCHの仕様書の12ページにあるような順番でテーブルを作成する必要があります.
が,このsqlのファイルは順番がめちゃくちゃになっていたので,順番を入れ替える必要があります.
だから今まで結果が全部Empty setだったんですね(^^;)
追記****/

2.スキーマの作成:tpch100Gというデータベースを作成し,そこにテーブルを作成
shell> mysql -u ユーザ名 -p -e "create database tpch100G"
shell> mysql -u ユーザ名 -p tpch100G < myisam_tpch_create_table.sql
→確認.
mysqlにログインし,
mysql> use tpch100G /* 利用するデータベースをtpch100Gに切り替えた */
mysql> show tables;
とすると,8つのテーブルが作成されていることが確認できます.

3.load_mysql.shの中を書き換え
/* 1で作成したテーブルが入っているフォルダを指定 */
PATH_DATA=/hoge/tpch/tables
/* データベース名指定 */
DATABASE=tpch100G

mysql…の文を全て,
mysql -u ユーザ名 -pパスワード -S MySQLのソケット $DATABASE -e…
と書き換える.

*この-pパスワードは間にスペースが入ってはだめなことに要注意!!
MySQLのソケットは
shell> mysqld --verbose --help
とすることで,サーバパラメータの一覧が出てくるので,確認できました.

/****追記(2008.11.07)
新しい実験環境でこのシェルの実行に失敗しました.
load_mysql.sh内に以下の赤字を追加することで回避できました
LOAD DATA LOCAL INFILE '$PATH_DATA/$i.tbl' INTO TABLE $i FIELDS TERMINATED BY '|'
"LOCALが指定されていない場合、ファイルはサーバホスト上に存在しなければならず、サーバによって直接読み取られなければなりません"
(BY MYSQLのリファレンス)
追記****/
3.シェルスクリプトを用いてデータをロード.
shell> chmod u+x load_mysql.sh
shell> ./load_mysql.sh

これで無事にテーブルにDBGENで作成したデータが入れられました><♪

次はStartup mysqlからです(^-^)/

0 件のコメント: