http://www.tpc.org/tpce/
물론 위 링크에서 EGen을 다운 받아서 수행하면 될 것 같지만, 여러가지 문제점이 많이 발생하는 관계로, Lauchpad Percona-tools project에서 tpcemysql 을 다운 받는다.
이는 물론 TPC-E like한 것 뿐이라서 동일하지는 않지만, 같은 database구조로 같은 query를 날리는 것 같다.
우선 linux에서 bzr 이 설치 되어 있는지 확인하고, 안되어 있으면 설치한다.
# yum install bzr
이 후 bzr 을 이용해 Lauchpad Percona-tools project에서 tpcemysql을 다운 받는다.
# bzr branch lp:~percona-dev/perconatools/tpcemysql
mysqltpce를 수행하기에 앞서서 unixODBC, unixODBC-devel package와 make를 위해 gcc-c++ package가 설치되어 있어야 하므로, 기설치여부를 확인하고 설치한다.
# yum install unixODBC, unixODBC-devel, gcc-c++
다운받은 tpcemysql의 prj 디렉토리로 이동하면 Makefile이 존재한다. 그 곳에서 make를 수행한다.
# cd tpcemysql/prj
# make
# make
make를 수행하기 전에 혹시 64bit 머신이라면 Makefile의 옵션을 수정해본다.(아직 이 옵션에 대한 의미가 확실치 않음)
# Defines for Linux (MySQL C API Wrapper)
CXX=g++
! CCFLAGS=-g -O2 -Wall -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -I/usr/include/mysql -DMYSQL_ODBC -DODBC_WRAPPER -DUSE_PREPARE
LDFLAGS=-g -O2 -Wall
LIBS=-lpthread -lmysqlclient_r
CXX=g++
! CCFLAGS=-g -O2 -Wall -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -I/usr/include/mysql -DMYSQL_ODBC -DODBC_WRAPPER -DUSE_PREPARE
LDFLAGS=-g -O2 -Wall
LIBS=-lpthread -lmysqlclient_r
--- 23,29 ----
# Defines for Linux (MySQL C API Wrapper)
CXX=g++
! CCFLAGS=-g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -I/usr/include/mysql -DMYSQL_ODBC -DODBC_WRAPPER -DUSE_PREPARE
LDFLAGS=-g -O2 -Wall
LIBS=-lpthread -lmysqlclient_r
CXX=g++
! CCFLAGS=-g -O2 -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -I/usr/include/mysql -DMYSQL_ODBC -DODBC_WRAPPER -DUSE_PREPARE
LDFLAGS=-g -O2 -Wall
LIBS=-lpthread -lmysqlclient_r
make가 성공적으로 완료되면 tpcemysql의 bin디렉토리에 3개의 파일이 생성되어 있을 것이다.
* EGenLoader, EGenSimpleTest, EGenValidate
tpcemysql 홈디렉토리에서 아래와 같이 수행한다. (꼭 홈디렉토리에서.. 아니라면 flat_in, flat_out옵션을 따로 주어야 함)
# ./bin/EGenLoader -c 1000 -t 1000 -w 3
사실 이정도로 옵션을 주고 데이터를 생성하는 것은 TPC-E specification 에 비해서 너무 작다. 하지만, EGenLoader의 default값으로 수행하면 하루 죙일.. 걸리는 것 같다. 동작을 확인하기 위해서 우선 작은 값으로 수행하는 것을 알아두자.
그 다음, tpcemysql/script/mysql 디렉토리로 이동하여 해당 query들을 수행하자. 수행하기전, database와 user를 생성해 두는 것은 잊지 말자.
# mysql -u root -p
# create database tpce;
# grant all privileges on tpce.* to 'tpce'@'localhost' identified by 'tpce';
# flush privileges;
# cd tpcemysql/script/mysql
# mysql -u tpce -p tpce < 1_creat_table.sql
# mysql -u tpce -p tpce < 2_load_data.sql
# mysql -u tpce -p tpce < 3_create_fk.sql
# mysql -u tpce -p tpce < 4_create_index.sql
# mysql -u tpce -p tpce < 5_create_sequence.sql
# create database tpce;
# grant all privileges on tpce.* to 'tpce'@'localhost' identified by 'tpce';
# flush privileges;
# cd tpcemysql/script/mysql
# mysql -u tpce -p tpce < 1_creat_table.sql
# mysql -u tpce -p tpce < 2_load_data.sql
# mysql -u tpce -p tpce < 3_create_fk.sql
# mysql -u tpce -p tpce < 4_create_index.sql
# mysql -u tpce -p tpce < 5_create_sequence.sql
query까지 수행하였다면, 이젠 EGenSimpleTest를 이용해서 테스트 하기만 하면 된다.
# ./bin/EGenSimpleTest -S localhost -D tpce -d 30 -t 180 -r 60 -u 8
참고 URL :
http://d.hatena.ne.jp/sh2/20100510
http://www.tpc.org/tpce/
http://www.mysqlperformanceblog.com/?s=tpc+e
'System > MySQL' 카테고리의 다른 글
mysql 기본 명령어 정리 (0) | 2011.03.30 |
---|