結局,最初のところで間違えてたのが原因でした(^^;)
DBGENとQGENのmakefileを作成したところで,MySQL用に記述をするのが必要でした.
これは,TPC-Hで記述しました.
これをmakeし直したら,tpch-run.pyは,qgenの場所やdbgenの場所,mysqlのコマンドなど,最初の方に値を設定するだけでちゃんと動きました(^-^)/
/***追記(2008.10.19)
あと,randomseedの値が大きすぎるとqgenが動かなかったので,これもranomseed=1の方を利用しました.
MySQLの場合は,set rowcountをLIMITで表しているため,tpch-run.py内のset rowcountで検索しているところをLIMITに書き換える必要もありました(496行目)
***/
さてさて,ログを見てみると…
Q1とQ13以外はちゃんとエラーなく実行できたっぽいです!
ということで,Q1とQ13はもともとあったファイルをいじっちゃおうと.
q1.sqlは,(3)を消したらOK.
q13.sqlは,何がだめなのか謎です…
select
c_count,
count(*) as custdist
from
(
select
c_custkey as c_costkey,
count(o_orderkey) as c_count
from
customer left join orders on
c_custkey = o_custkey
and o_comment not like "%special%packages%"
group by
c_custkey
) as c_orders (c_custkey, c_count)
group by
c_count
order by
custdist desc,
c_count desc;
ただいま検討中...
でもほんとにこれに手を加えるので合ってるのかなぁ…?
<追記>2008.10.19
この,もともと22個あったSQLファイルをMySQL用に書き換える方法は合ってるようです.
しかし,調べたところ,Q13は,as c_orders (c_custkey, c_count)という文法に対応してないため,サブクエリ内にasを入れるとあるのですが,これをやってもうまくいきません..
謎.謎.謎.
<追記>2008.10.20
解決しました(>w<)/
DBT-3 version 1.9 MySQL5.0への移植作業報告書の5.2.サブクエリの実施結果に対するエイリアス名指定文法の修正 (移植)を参照!
from ( select
c_custkey, count(o_orderkey) as c_count
from
customer left outer join orders on
c_custkey = o_custkey and o_comment not like '%:1%:2%'
group by
c_custkey
) as c_orders
やっぱりMySQLはas c_orders (c_custkey, c_count)という文法に対応していませんでした.よって赤字のように修正したところ,動いたー!
やった(>w<)/♪
うまくいった気がするぞぉ…
2008年10月15日水曜日
MySQL + TPC-H(2)
似てるから用語確認.
mysqld:MySQLサーバ
mysql :SQLステートメントを実行するためのコマンドラインクライアント
今日は,tpch_run.pyを動かそうっと.
まずは,MySQLにPythonでアクセスするためのインターフェース(MySQLdb)をここからダウンロード.
しかもなんだか,mysql_configもないと言われた.
ので,まずはMySQLのサイトから,"Libraries and header files"を持ってきてインストール.
mysql_config発見(^-^)/
/usr/bin/mysql_config
*MySQLdbのインストール(READMEに沿って)
1.解凍&移動
shell> tar xfz MySQL-python-1.2.2.tar.gz
shell> cd MySQL-python-1.2.2
2.site.cfgの設定を変更.
mysql_config = /usr/bin/mysql_config
を追加.
3.setup.pyの中身を書き換える.
mysock,mysql_cmd,mysql_queryの値を適切なものに変更.
dbgen_dir,qgenの値にそれぞれの場所を設定.
AUDIT_DIRが設定されていなかったので,環境変数に追加.
shell> setenv AUDIT_DIR "/tmp"
→ここにTPC-Hを動かした結果が保存されるみたい.
4.セットアップ
shell> python setup.py build
shell> python setup.py install
5.動かしてみる!
shell> python tpch_run.py -p -s 1 --leave_server_up
とりあえず,動いたっぽいので今日はこのまま放置してバイト行きまする.
*今日学んだこと*
インストールはrootでするべき!
先輩方,お世話になりましたm(_ _)m
mysqld:MySQLサーバ
mysql :SQLステートメントを実行するためのコマンドラインクライアント
今日は,tpch_run.pyを動かそうっと.
まずは,MySQLにPythonでアクセスするためのインターフェース(MySQLdb)をここからダウンロード.
しかもなんだか,mysql_configもないと言われた.
ので,まずはMySQLのサイトから,"Libraries and header files"を持ってきてインストール.
mysql_config発見(^-^)/
/usr/bin/mysql_config
*MySQLdbのインストール(READMEに沿って)
1.解凍&移動
shell> tar xfz MySQL-python-1.2.2.tar.gz
shell> cd MySQL-python-1.2.2
2.site.cfgの設定を変更.
mysql_config = /usr/bin/mysql_config
を追加.
3.setup.pyの中身を書き換える.
mysock,mysql_cmd,mysql_queryの値を適切なものに変更.
dbgen_dir,qgenの値にそれぞれの場所を設定.
AUDIT_DIRが設定されていなかったので,環境変数に追加.
shell> setenv AUDIT_DIR "/tmp"
→ここにTPC-Hを動かした結果が保存されるみたい.
4.セットアップ
shell> python setup.py build
shell> python setup.py install
5.動かしてみる!
shell> python tpch_run.py -p -s 1 --leave_server_up
とりあえず,動いたっぽいので今日はこのまま放置してバイト行きまする.
*今日学んだこと*
インストールはrootでするべき!
先輩方,お世話になりましたm(_ _)m
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からです(^-^)/
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からです(^-^)/
2008年10月3日金曜日
結局…
TPC-Hが何なのか,どーやってMySQLと関連づけて動かすのか謎すぎて,
先輩にヘルプしました.
だめすぎる(;_;)
色々見てみたサイト.
TPC-Hの公式ページ
TPC-H Run on MySQL 5.1 and 6.0
WindowsServerのTPC-Hの結果
→ここに,「標準化されたレポート生成のパフォーマンスは、別の TPC-R ベンチマークで実証します。」ってあるのも謎.
まだまだひよっこすぎてだめだなぁ..
あと,体調管理はしっかりしなきゃだめだなっと反省..
論文読もうっと.
先輩にヘルプしました.
だめすぎる(;_;)
色々見てみたサイト.
TPC-Hの公式ページ
TPC-H Run on MySQL 5.1 and 6.0
WindowsServerのTPC-Hの結果
→ここに,「標準化されたレポート生成のパフォーマンスは、別の TPC-R ベンチマークで実証します。」ってあるのも謎.
まだまだひよっこすぎてだめだなぁ..
あと,体調管理はしっかりしなきゃだめだなっと反省..
論文読もうっと.
2008年10月2日木曜日
TPC-H
さて,研究の環境作り中なんですが…
これがまた分からないことだらけです(;_;)
今はTPC-Hというベンチマークを使ってみようという…
これが全く英語の資料ばっかりで.
とりあえず分かったことは,
TPC-Hのサイトの右下のところから,DBGEN and QGENをとってくると.
どうも,これでデータとクエリを勝手に作ってくれるみたいです.
makefile.suiteをコピーしてmakefileを作成.
とりあえず,
CC = gcc
DATABASE= SQLSERVER
MACHINE = LINUX
WORKLOAD = TPCH
としてみたところ,makeによりコンパイルができました.
……これは間違い^^;
追記の追記参照.
仕様書のサンプルの通り,./dbgen -s 1としてみたら,"hoge.tbl"がいくつかできた.
でも,あれ?どうやってMySQLの中にテーブルとして入れるんだろう?
…
明日先輩にヘルプします.涙
<追記>
…と思ったら!!
なんとも親切そうなページを発見しました★
明日はこれを参考にやってみよう(^-^)/♪
Brett Schroederさんのブログ
わーい♪
<追記の追記>2008.10.18
makefileはちゃんとMySQL用に書くべきでした.
CC = gcc
DATABASE= MYSQL
MACHINE = LINUX
WORKLOAD = TPCH
として,tpcd.hに,
#ifdef MYSQL
#define GEN_QUERY_PLAN "EXPLAIN"
#define START_TRAN "START TRANSACTION;\n"
#define END_TRAN "COMMIT;\n"
#define SET_OUTPUT ""
#define SET_ROWCOUNT "LIMIT %d\n"
#define SET_DBASE "USE %s\n"
#endif /* MYSQL */
と追記.
これがまた分からないことだらけです(;_;)
今はTPC-Hというベンチマークを使ってみようという…
これが全く英語の資料ばっかりで.
とりあえず分かったことは,
TPC-Hのサイトの右下のところから,DBGEN and QGENをとってくると.
どうも,これでデータとクエリを勝手に作ってくれるみたいです.
makefile.suiteをコピーしてmakefileを作成.
とりあえず,
CC = gcc
DATABASE= SQLSERVER
MACHINE = LINUX
WORKLOAD = TPCH
としてみたところ,makeによりコンパイルができました.
……これは間違い^^;
追記の追記参照.
仕様書のサンプルの通り,./dbgen -s 1としてみたら,"hoge.tbl"がいくつかできた.
でも,あれ?どうやってMySQLの中にテーブルとして入れるんだろう?
…
明日先輩にヘルプします.涙
<追記>
…と思ったら!!
なんとも親切そうなページを発見しました★
明日はこれを参考にやってみよう(^-^)/♪
Brett Schroederさんのブログ
わーい♪
<追記の追記>2008.10.18
makefileはちゃんとMySQL用に書くべきでした.
CC = gcc
DATABASE= MYSQL
MACHINE = LINUX
WORKLOAD = TPCH
として,tpcd.hに,
#ifdef MYSQL
#define GEN_QUERY_PLAN "EXPLAIN"
#define START_TRAN "START TRANSACTION;\n"
#define END_TRAN "COMMIT;\n"
#define SET_OUTPUT ""
#define SET_ROWCOUNT "LIMIT %d\n"
#define SET_DBASE "USE %s\n"
#endif /* MYSQL */
と追記.
登録:
投稿 (Atom)